我有一个页面,用户输入数据并点击“保存”按钮。数据被保存到数据库中,我希望页面自行刷新以反映数据库中的新数据。我正在使用托管 bean,如何让页面自行刷新?
3 回答
我想到了两个选择:
- 利用 JSF 导航规则
- 使用渲染属性
广告 1)
定义点击“保存”后导航到的页面。为此,您将数据实际保存到 DB 的操作将进入定义为的方法,actionListener
或者,如果您想根据保存过程的结果制作下一页,则为action
.
导航规则将在 faces-config.xml 中定义 如果没有导航规则与给定的操作匹配,则将重新显示当前页面(尽管根据我的经验,此刷新与普通的 HTML 刷新不同)。
广告 2)
如果您将同一页面上的某些列表或数据表设置为 bean 中的模型,则更改将自动显示,除非您在immediate
保存按钮上使用关键字设置为 true。
此外,您可能会考虑一个具有您选择的内容的面板,该面板rendered
在您的 bean 中将属性设置为布尔值,这将在保存过程中触发,因此仅在点击save后才显示内容。
您可以使用 IceFaces 的 AJAX 推送功能。这会初始化客户端的重新渲染。
推荐的(也是最简单的)方法是在托管 bean 中使用 SessionRender API:
SessionRenderer.addCurrentSession("myGroup");
SessionRenderer.render("myGroup");
有关更多信息,请参阅 Icefaces 开发人员指南。
这取决于你怎么做。
当您单击按钮时,JSF 生命周期开始启动,如果您在按钮的操作中启动保存到数据库,那么您在管理 bean 中更新的任何值都应该自动反映在页面中。JSF 生命周期会自动为您执行此操作,icefaces 可以使用 AJAX 桥接器执行此操作,因此您无需重新加载页面。
如果您正在异步工作,则需要使用 icefaces 为您提供的 Push API。从服务器端开始生命周期。