(使用JEE6)是否可以让网页自动更新(或监听)bean /类中的值,并在发生这些更改时将其显示在JSF上?
答案 0 :(得分:1)
正如KayKay所提到的,您可以使用javascript实现某种轮询方法,以便定期向服务器发送更新(如果有的话)。除非你使用ajax,否则你必须满足于只有完整的页面刷新。
JSF就像它一样好,位于基本的无状态Web技术之上。因此,除非您使用Ajax或某些自定义代码,否则服务器将仅响应来自客户端的请求。像icefaces这样的一些库已经包含了一个“推”组件,允许你正在寻找的东西(从我的理解,这是冰淇淋的基本部分)。也就是说,将服务器端更改推送到客户端。
您必须在您的端部设置一个侦听器,以便在服务器上发生值更改时(例如在服务器上的辅助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
另一个堆栈问题:
Is there a better Ajax Push for JSF 2.0 than Icefaces
不幸的是,看起来你不能只用JSF来做这件事,你将不得不使用其中一个库甚至更难,推出自己的推送机制。
答案 1 :(得分:0)
我不知道这样做的JSF功能。我只是做一些javascript轮询,例如使用jquery load method来刷新显示值的页面部分。
知道你想做什么会有所帮助:当有变化时刷新整个页面,更新从开始显示的某些值,或者向页面添加新值。