搜索在 vaadin 用户界面之间传递数据的最佳实践
Searching best practice for passing data between vaadin UIs
我是 vaadin 的新手,我正在尝试使用来自 SQL 服务器的数据构建一个包含多个页面的 Web 应用程序。感谢我对几个 Whosebug 主题的研究,我可以让第一页正常工作,在网格中显示我的 Person 实体的一些基本数据。
现在,当我在网格中 select 一条记录并单击一个按钮时,我想打开第二个页面并使用 selected 人员的 ID(person.getId()
) 从后端加载附加数据到 FormLayout(在本例中为联系信息)。
目前,我已经让我的应用程序打开了第二页,但没有数据。我的第二页有 @Route("/contact")
注释,我在第一页中使用 ui.navigate("/contact")
导航到第二页。
昨天我花了几个小时阅读有关在页面之间传递数据的 Blackboard EventBus。我开始做一个简单的例子,第一页触发一个人事件,第二页监听这些事件并显示带有 System.out.println()
的人。但是我如何使用此事件/人员数据来刷新我的第二个 vaadin 页面?与 Blackboard 代码示例一样,我的 Blackboard Bus 是静态的。
如前所述,我想 select 一个人,然后导航到另一个页面以加载此人的其他信息。如果用户导航回第一页并且 select 是另一个人,再次单击按钮导航到第二页,第二页应该刷新并显示新 select 人的数据。
目前,我的第二个页面已加载,但因 NullPointerException
而崩溃,因为 selectedPerson 变量为空,我不明白如何使用 Blackboard Listener 刷新 UI 与从事件中检索到的人员数据。
我现在真的不知道如何进行。
我建议您改为将此人的 ID 作为参数传递。像这样(未经测试的代码)
FirstView
button.addClickListener(event -> {
ui.navigate(ContactPage.class, selectedPerson.getId());
}
然后是另一页
@Route("contact")
public class ContactPage extends ... implements HasUrlParameter<Long> {
...
@Override
public void setParameter(BeforeEvent event, Long parameter) {
if (parameter != null) {
// Load additional info
} else {
Notfication.show("Blablabla");
// Or
event.rerouteToError(someError);
}
}
我是 vaadin 的新手,我正在尝试使用来自 SQL 服务器的数据构建一个包含多个页面的 Web 应用程序。感谢我对几个 Whosebug 主题的研究,我可以让第一页正常工作,在网格中显示我的 Person 实体的一些基本数据。
现在,当我在网格中 select 一条记录并单击一个按钮时,我想打开第二个页面并使用 selected 人员的 ID(person.getId()
) 从后端加载附加数据到 FormLayout(在本例中为联系信息)。
目前,我已经让我的应用程序打开了第二页,但没有数据。我的第二页有 @Route("/contact")
注释,我在第一页中使用 ui.navigate("/contact")
导航到第二页。
昨天我花了几个小时阅读有关在页面之间传递数据的 Blackboard EventBus。我开始做一个简单的例子,第一页触发一个人事件,第二页监听这些事件并显示带有 System.out.println()
的人。但是我如何使用此事件/人员数据来刷新我的第二个 vaadin 页面?与 Blackboard 代码示例一样,我的 Blackboard Bus 是静态的。
如前所述,我想 select 一个人,然后导航到另一个页面以加载此人的其他信息。如果用户导航回第一页并且 select 是另一个人,再次单击按钮导航到第二页,第二页应该刷新并显示新 select 人的数据。
目前,我的第二个页面已加载,但因 NullPointerException
而崩溃,因为 selectedPerson 变量为空,我不明白如何使用 Blackboard Listener 刷新 UI 与从事件中检索到的人员数据。
我现在真的不知道如何进行。
我建议您改为将此人的 ID 作为参数传递。像这样(未经测试的代码)
FirstView
button.addClickListener(event -> {
ui.navigate(ContactPage.class, selectedPerson.getId());
}
然后是另一页
@Route("contact")
public class ContactPage extends ... implements HasUrlParameter<Long> {
...
@Override
public void setParameter(BeforeEvent event, Long parameter) {
if (parameter != null) {
// Load additional info
} else {
Notfication.show("Blablabla");
// Or
event.rerouteToError(someError);
}
}