1

这是我的场景:

我正在使用 JSF。

  1. 我有一个每 5 秒刷新一次的页面(但用户没有注意到它,因为一切都是 ajaxified)
  2. 我想要一个模式窗口,当用户单击某些东西(例如,一个按钮)时,它会向用户显示一个事物列表。因此,每次用户单击该按钮时,模式都会显示最新列表。

现在我有以下内容:加载了 a 属性的模式。此属性从 DB 加载内容并将列表返回到 JSF 页面。

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

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

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

谢谢。

4

2 回答 2

0

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

要在单击按钮时获取列表,请让按钮触发重新呈现面板内容的 ajax 请求,并在完成 ajax 请求后使面板可见。您还没有说您使用的是什么 ajax 或组件库;使用 Richfaces,它类似于:

<a4j:commandButton 
    action="#{mybean.fetchListFromDatabase}" 
    rerender="panelcontent" 
    oncomplete="Richfaces.showModalPanel('thepanel')"
/>
于 2012-06-10T08:40:14.250 回答
0

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

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

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

于 2012-06-10T08:45:59.313 回答