Vaadin传参查看
Vaadin pass parameter to view
我目前正在使用 Vaadin 制作电影数据库的表格。我的问题是深度链接的整个情况。我想要一个 url 里面有一个电影的 id,这样就可以得到具体电影的形式。
localhost:port/filmView/idOfSelectedMovie
我目前正在使用 pushState,但有几个问题。
1) 当我在 Id 之前添加字符串 "Film/" 时,第一个选择工作正常,但是对于以下选择,url 只是继续添加这个。
http://localhost:8081/Film/Film/Film/Film/Film/4
2) 我尝试的第二个选项是仅使用一个 ID。结果是 url 只保留带有端口的主机,并摆脱 ViewName
http://localhost:8801/4
我已经尝试过使用replaceState和Urifragment方法,效果也好不到哪里去
电影列表选择函数
this.itemsList.addSelectionListener(selectionEvent -> {
if (selectionEvent.getFirstSelectedItem().isPresent()) {
Film selectedFilm = selectionEvent.getFirstSelectedItem().get();
this.setupForm(selectedFilm);
Page.getCurrent().pushState("Film/" + selectedFilm.getFilmId());
}
});
在视图之间导航时必须执行的操作:假设您有一个 View
电影列表,您可以从中 select 一部电影。当您 select 从该列表中选择一部电影时,您将移至电影 View
getUI().getNavigator().navigateTo(FilmView + "/" + filmId); //let's say id 88
这样,您将导航到http://localhost:8081/Film/88
现在,在您的 FilmView
中,您可以获取并使用此 ID,例如:
public class FilmView extends VerticalLayout implements View{
@Override
public void enter(ViewChangeEvent event) {
String yourPassedId = event.getParameters();
//do stuff with your id, for example loading from DB
}
}
这样一来,每一部你想要的片子都可以用心link,喜欢http://localhost:8081/Film/88
我目前正在使用 Vaadin 制作电影数据库的表格。我的问题是深度链接的整个情况。我想要一个 url 里面有一个电影的 id,这样就可以得到具体电影的形式。
localhost:port/filmView/idOfSelectedMovie
我目前正在使用 pushState,但有几个问题。
1) 当我在 Id 之前添加字符串 "Film/" 时,第一个选择工作正常,但是对于以下选择,url 只是继续添加这个。
http://localhost:8081/Film/Film/Film/Film/Film/4
2) 我尝试的第二个选项是仅使用一个 ID。结果是 url 只保留带有端口的主机,并摆脱 ViewName
http://localhost:8801/4
我已经尝试过使用replaceState和Urifragment方法,效果也好不到哪里去
电影列表选择函数
this.itemsList.addSelectionListener(selectionEvent -> {
if (selectionEvent.getFirstSelectedItem().isPresent()) {
Film selectedFilm = selectionEvent.getFirstSelectedItem().get();
this.setupForm(selectedFilm);
Page.getCurrent().pushState("Film/" + selectedFilm.getFilmId());
}
});
在视图之间导航时必须执行的操作:假设您有一个 View
电影列表,您可以从中 select 一部电影。当您 select 从该列表中选择一部电影时,您将移至电影 View
getUI().getNavigator().navigateTo(FilmView + "/" + filmId); //let's say id 88
这样,您将导航到http://localhost:8081/Film/88
现在,在您的 FilmView
中,您可以获取并使用此 ID,例如:
public class FilmView extends VerticalLayout implements View{
@Override
public void enter(ViewChangeEvent event) {
String yourPassedId = event.getParameters();
//do stuff with your id, for example loading from DB
}
}
这样一来,每一部你想要的片子都可以用心link,喜欢http://localhost:8081/Film/88