1

(使用 JEE6)是否可以让网页自动更新(或侦听)来自 bean/类中的值,并在这些更改发生时将它们显示在 JSF 上?

4

2 回答 2

1

正如 KayKay 提到的,您可以使用 javascript 实现某种轮询方法,以定期要求服务器发送更新(如果有)。除非您使用 ajax,否则您将不得不满足于仅完整的页面刷新。

尽管 JSF 很好,但它位于基本的无状态 Web 技术之上。因此,除非您使用 Ajax 或某些自定义代码,否则服务器只会响应来自客户端的请求。一些像icefaces这样的库已经合并了一个“推送”组件,它允许你正在寻找什么(据我了解,这是icefaxes的一个基本部分)。也就是说,将服务器端的更改推送到客户端。

您必须在您的一端设置一个侦听器,以便在服务器上发生值更改时通知您的 bean(例如在服务器上的支持 bean 中)。当更改发生时,您可以要求说“icefaces push”(或其他库,如 primefaces,您表示您不想使用)向客户发送通知。客户端代码(通常是 ajax/javascript)将处理通知,然后根据正常的请求响应发送整个对象的请求。那就是通知告诉客户它有兴趣更改的内容,以便客户可以要求更新。除了通知,仍然请求/响应。

我提到 icefaces push 是因为它现在似乎是最受欢迎的库。但其他人也有这个。我不相信标准的 JSF 2.0 AJAX 库有这个。

这里有几个资源可供查看:

(视频是了解正在发生的事情的好开始,然后使用网站的其余部分) http://www.icesoft.org/demos/icepush-demos.jsf

较旧但我认为仍然与 IBM 教程有关,以库存更改为例:

http://www.ibm.com/developerworks/web/library/wa-aj-dynamic/index.html

另一个相关的堆栈问题:

JSF 2.0 有比 Icefaces 更好的 Ajax Push

不幸的是,您似乎无法仅使用 JSF 来做到这一点,您将不得不使用其中一个库,或者更难的是,使用您自己的推送机制。

于 2012-08-08T02:23:47.673 回答
0

我不知道这样做的 JSF 功能。我会简单地做一些 javascript 轮询,例如使用jquery load 方法来刷新页面中显示值的部分。

知道你想做什么会有所帮助:当有变化时刷新整个页面,更新从一开始就显示的一些值,或者向页面添加新值。

于 2012-08-03T18:10:03.103 回答