Java 寻找在vaadin UIs之间传递数据的最佳实践
我是vaadin的新手,我正在尝试使用SQL Server中的数据构建一个包含多个页面的web应用程序。多亏了我对几个StackOverflow主题的研究,我可以在第一页开始工作,在网格中显示我的Person实体的一些基本数据 现在,当我在网格中选择一条记录并单击按钮时,我想打开第二个页面,并使用所选人员的ID(Java 寻找在vaadin UIs之间传递数据的最佳实践,java,sql-server,spring,vaadin,vaadin-flow,Java,Sql Server,Spring,Vaadin,Vaadin Flow,我是vaadin的新手,我正在尝试使用SQL Server中的数据构建一个包含多个页面的web应用程序。多亏了我对几个StackOverflow主题的研究,我可以在第一页开始工作,在网格中显示我的Person实体的一些基本数据 现在,当我在网格中选择一条记录并单击按钮时,我想打开第二个页面,并使用所选人员的ID(Person.getId())将其他数据从后端加载到FormLayout(在本例中为联系人信息) 目前,我已经让我的应用程序打开了第二页,但没有数据。我的第二页有@Route(“/con
Person.getId()
)将其他数据从后端加载到FormLayout(在本例中为联系人信息)
目前,我已经让我的应用程序打开了第二页,但没有数据。我的第二页有@Route(“/contact”)
注释,我正在使用第一页中的ui.navigate(“/contact”)
导航到第二页
昨天我花了几个小时阅读黑板事件总线,以便在页面之间传递数据。我做了一个简单的例子,第一个页面触发一个person事件,第二个页面监听这些事件并显示带有System.out.println()
的person。但是如何使用此事件/人员数据刷新第二个vaadin页面?在黑板代码示例中,我的黑板总线是静态的
如前所述,我想选择一个人,然后导航到另一个页面以加载此人的其他信息。如果用户导航回第一页并选择另一个人,再次单击按钮导航到第二页,则第二页应刷新并显示新选择的人的数据
目前,我的第二个页面已加载,但由于NullPointerException
而崩溃,因为selectedPerson变量为空,我不知道如何使用Blackboard Listener使用从事件中检索到的person数据刷新UI
我现在真的不知道如何继续。我建议您将此人的id作为参数传递。类似这样的代码(未经测试的代码) 然后是另一页
@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);
}
}
@路线(“联系人”)
公共类ContactPage扩展。。。实现HasUrlParameter{
...
@凌驾
公共void setParameter(BeforeEvent事件,长参数){
if(参数!=null){
//加载附加信息
}否则{
通知显示(“布拉布拉布拉”);
//或
事件。重新路由到错误(someError);
}
}
我建议您将该人员的id作为参数传递。类似这样的内容(未测试的代码)
然后是另一页
@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);
}
}
@路线(“联系人”)
公共类ContactPage扩展…实现HasUrlParameter{
...
@凌驾
公共void setParameter(BeforeEvent事件,长参数){
if(参数!=null){
//加载附加信息
}否则{
通知显示(“布拉布拉布拉”);
//或
事件。重新路由到错误(someError);
}
}
我强烈建议您在进一步实施应用程序之前阅读本页。我相信您在阅读本页的同时也会了解其他最佳实践。您正在寻找的是。我强烈建议您在进一步实施应用程序之前阅读本页。我肯定您会了解其他最佳实践阅读时也要练习。你要找的是。谢谢,这解决了我的问题。我也按照上面Kaspar Scherrer的建议,花了一个晚上再次详细阅读了文档。我将在接下来的几天里继续阅读整个文档,以便在下次阅读之前更好地理解理论实施步骤。听起来是个很棒的计划!最近添加了对文档进行评论的功能(通过在每页底部开始讨论
),因此,如果您阅读的内容不清楚,请毫不犹豫地发表评论:)谢谢,这解决了我的问题。我也遵循了上面Kaspar Scherrer的建议,花了一个晚上再次详细阅读了文档。我将在接下来的几天继续阅读整个文档,以便在下一次im之前更好地理解理论实施步骤。听起来是个很棒的计划!最近添加了对文档进行评论的功能(通过在每页底部开始讨论),因此如果您阅读的内容不清楚,请毫不犹豫地对其进行评论:)