gpt4 book ai didi

java - 搜索在 vaadin UI 之间传递数据的最佳实践

转载 作者:行者123 更新时间:2023-12-01 17:44:57 27 4
gpt4 key购买 nike

我是 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());
}

然后是另一页

@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);
}
}

关于java - 搜索在 vaadin UI 之间传递数据的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56643349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com