tig*_*igu 1 java sql-server spring vaadin vaadin-flow
我是 vaadin 的新手,我正在尝试使用 SQL Server 中的数据构建一个包含多个页面的 Web 应用程序。感谢我对几个 StackOverflow 主题的研究,我可以让第一页工作,在网格中显示我的 Person 实体的一些基本数据。
现在,当我在网格中选择一条记录并单击一个按钮时,我想打开第二页并使用所选人员的 ID ( person.getId()) 将其他数据从后端加载到 FormLayout(在本例中为联系信息)。
目前,我已经让我的应用程序打开了第二页,但没有数据。我的第二页有@Route("/contact")注释,我ui.navigate("/contact")在第一页中使用,以导航到第二页。
昨天我花了几个小时阅读 Blackboard EventBus 在页面之间传递数据。我做了一个简单的例子,第一页触发一个人事件,第二页监听这些事件并用System.out.println(). 但是如何使用此事件/人员数据刷新我的第二个 vaadin 页面?在 Blackboard 代码示例中,我的 Blackboard Bus 是静态的。
如前所述,我想选择一个人,然后导航到另一个页面以加载此人的其他信息。如果用户导航回第一页并选择另一个人,再次单击按钮导航到第二页,则第二页应刷新并显示新选择的人的数据。
目前,我的第二个页面加载,但崩溃了NullPointerException,因为 selectedPerson 变量为空,我不明白如何使用 Blackboard Listener 使用从事件中检索到的人员数据刷新 UI。
我现在真的不知道如何进行。
我建议您将人的 id 作为参数传递。像这样的东西(未经测试的代码)
FirstView
button.addClickListener(event -> {
ui.navigate(ContactPage.class, selectedPerson.getId());
}
Run Code Online (Sandbox Code Playgroud)
然后另一个页面
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |