vaadin中的页面加载事件

vaadin中的页面加载事件,vaadin,Vaadin,我有一个pagewithtable,它根据复杂的查询填充数据(即使我使用分页,也需要很多时间)。我使用BeanItemcontainer将数据加载到表中。现在谈到问题,我希望以异步方式将数据加载到表中(在用户屏幕上加载完整页面之后。我希望填充数据)。有没有像onPageLoad事件、onPageRenderEvent或类似的东西可以用来实现这一点 详细信息- 版本-Vaadin-7.0 组件-表 数据容器-BeanItemContainer。有很多方法可以解决这个问题,但您必须决定如何解决这个问

我有一个pagewithtable,它根据复杂的查询填充数据(即使我使用分页,也需要很多时间)。我使用BeanItemcontainer将数据加载到表中。现在谈到问题,我希望以异步方式将数据加载到表中(在用户屏幕上加载完整页面之后。我希望填充数据)。有没有像onPageLoad事件、onPageRenderEvent或类似的东西可以用来实现这一点

详细信息-

版本-Vaadin-7.0
组件-表

数据容器-BeanItemContainer。

有很多方法可以解决这个问题,但您必须决定如何解决这个问题。我知道有两个:

1) 客户的请求。
2) 从服务器推送。(技术上仍然是客户的请求)

1--A)来自客户端编程的Javascript函数的请求。使用或将组件附加到布局,并通过调用发出请求。然后可以在该请求中更新表,而不必担心同步问题

1--B)制作自己的GWT/Vaadin小部件(基本上是一样的)来完成1A

2--A)来自“服务器端”上编程的Vaadin组件的请求。创建一个可见(或不可见)的轮询服务器。在后台线程中填充该表,Vaadin将发送您当前收集的数据。进度指示器可以多次执行此操作,表只会将差异发送到客户端代码(称为增量)。小心地从后台线程更新面向客户端的组件;您需要同步对组件的更改,以避免并发修改错误

2--B)在应用程序中添加一个复习程序,并遵循上面的2A,而不需要进度指示器


这两种解决方案都涉及到显式更新表,或者在后台线程(2A,B)中,或者在从客户机(1A,B)调用的服务器方法中。两者在技术上都是基于客户请求的。Vaadin团队正在努力添加真正的“推送”。

解决此问题的Vaadin方法是使用延迟加载容器。Vaadin:SQLContainer在core中提供了几个惰性加载容器。

非常详尽的答案,感谢您的指点!我将尝试按照您建议的方式执行此操作,如果有任何问题,请返回!嗨,Christopher,很抱歉接受你的回答有点晚,我们使用了Refresher插件,现在在7.1中我们使用UI轮询。你好,Henri,我为迟来的响应道歉。正如Christopher提到的,我们在7.0中使用了Refresher插件,在7.1中使用了UI轮询。当然后台线程会延迟更新内容。不要使用JPA容器。。。太慢了