绑定到昂贵的JSF属性的正确方法是什么?

时间:2012-06-10 08:31:26

标签: java jsf-2

这是我的情景:

我正在使用JSF。

  1. 我有一个每5秒刷新一次的页面(但是用户没有注意到它,因为所有内容都被激活了)
  2. 我想要一个模态窗口,当用户点击某些内容(例如按钮)时,该窗口会向用户显示一系列内容。因此,每次用户单击该按钮时,模式都会显示最新列表。
  3. 现在我有以下内容:带有a属性的模态。此属性从DB加载内容并将列表返回到JSF页面。

    主要问题是由于页面每5秒刷新一次,因此每5秒调用一次该属性(即对DB的请求)。

    总结:我希望每次用户点击一个按钮时,在每5秒刷新(ajaxified)的页面内都有一个加载列表的模态。

    做这些事情的正确方法是什么?指向优秀教程的指针是很好的答案,我不需要代码,而是了解最佳实践。

    感谢。

2 个答案:

答案 0 :(得分:0)

每当用户单击按钮时,我都会从数据库中获取列表,并将其放入当前请求(范围=会话,视图,会话或其他)中的bean的属性中,然后绑定该属性与EL表达。

要在单击按钮时获取列表,请让按钮触发重新呈现面板内容的ajax请求,并在完成ajax请求后使面板可见。你还没有说过你正在使用的ajax或组件库;与Richfaces一样,它就像:

<a4j:commandButton 
    action="#{mybean.fetchListFromDatabase}" 
    rerender="panelcontent" 
    oncomplete="Richfaces.showModalPanel('thepanel')"
/>

答案 1 :(得分:0)

模式面板已在RichFaces和PrimeFaces库中实现

这两个实现都包含ajax和jQuery来管理基本行为。您可以使用其中一个来实现模式面板和从DB恢复数据的列表(使用ViewScope托管bean)。

如果您不能或可能不想将任何这些库添加到项目中,您可以使用它们的代码并将其用作实现的启动(两个库都是开源的)。