0

我有一个页面,用户输入数据并点击“保存”按钮。数据被保存到数据库中,我希望页面自行刷新以反映数据库中的新数据。我正在使用托管 bean,如何让页面自行刷新?

4

3 回答 3

3

我想到了两个选择:

  1. 利用 JSF 导航规则
  2. 使用渲染属性

广告 1)

定义点击“保存”后导航到的页面。为此,您将数据实际保存到 DB 的操作将进入定义为的方法,actionListener或者,如果您想根据保存过程的结果制作下一页,则为action.

导航规则将在 faces-config.xml 中定义 如果没有导航规则与给定的操作匹配,则将重新显示当前页面(尽管根据我的经验,此刷新与普通的 HTML 刷新不同)。

广告 2)

如果您将同一页面上的某些列表或数据表设置为 bean 中的模型,则更改将自动显示,除非您在immediate保存按钮上使用关键字设置为 true。

此外,您可能会考虑一个具有您选择的内容的面板,该面板rendered在您的 bean 中将属性设置为布尔值,这将在保存过程中触发,因此仅在点击save后才显示内容。

于 2009-10-13T06:39:12.680 回答
1

您可以使用 IceFaces 的 AJAX 推送功能。这会初始化客户端的重新渲染。

推荐的(也是最简单的)方法是在托管 bean 中使用 SessionRender API:

SessionRenderer.addCurrentSession("myGroup");
SessionRenderer.render("myGroup");

有关更多信息,请参阅 Icefaces 开发人员指南。

于 2009-10-28T11:28:49.590 回答
0

这取决于你怎么做。

当您单击按钮时,JSF 生命周期开始启动,如果您在按钮的操作中启动保存到数据库,那么您在管理 bean 中更新的任何值都应该自动反映在页面中。JSF 生命周期会自动为您执行此操作,icefaces 可以使用 AJAX 桥接器执行此操作,因此您无需重新加载页面。

如果您正在异步工作,则需要使用 icefaces 为您提供的 Push API。从服务器端开始生命周期。

于 2009-11-05T20:02:02.253 回答