我有一个包含基于复杂查询填充数据的表的页面(即使我使用分页也需要很多时间)。我使用 BeanItemcontainer 将数据加载到表中。现在问题来了,我希望以异步方式将数据加载到表中(在用户屏幕上加载完整页面之后。我想填充数据)。有没有像 onPageLoad 事件或 onPageRenderEvent 或等效的东西可以用来实现这一目标?
细节 -
版本 - Vaadin -7.0
组件 - 表
数据容器 - BeanItemContainer。
有多种方法可以解决此问题,但您必须决定如何解决该问题。这是我所知道的两个:
1)来自客户的请求。
2)从服务器推送。(技术上仍然是客户的请求)
1 -- A) 来自客户端编程的 Javascript 函数的请求。使用Javascript 扩展或Javascript 组件将组件附加到布局,并通过调用服务器端 API 函数发出请求。然后,您可以更新该请求中的表,而不必担心同步问题。
1 -- B) 制作您自己的 GWT / Vaadin 小部件(基本上是同样的事情)来执行 1A。
2 -- A) 来自在“服务器端”编程的 Vaadin 组件的请求。制作可见(或不可见)的进度指示器来轮询服务器。在后台线程中填充表,Vaadin 将发送您当前收集的数据。进度指示器可以多次执行此操作,并且表只会将差异发送到客户端代码(称为增量)。小心从后台线程更新面向客户端的组件;您需要同步对组件的更改以避免并发修改错误。
2 -- B) 向应用程序添加复习内容并按照上面的 2A 进行操作,无需进度指示器。
任一解决方案都涉及您在后台线程 (2A,B) 或从客户端调用的服务器方法 (1A,B) 中显式更新表。两者在技术上都是基于客户请求的。Vaadin 团队正在努力添加真正的“推动力”。
| 归档时间: |
|
| 查看次数: |
4871 次 |
| 最近记录: |