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