我有许多菜单链接,每个都与一个 session bean 相关联。由于 bean 处于 session 中,因此当我在不同的菜单链接之间移动时,这些值将被保留。例如,假设有 2 个菜单链接 - 客户资料和帐户详细信息。在 Customer Profile 中,可以通过输入名字和姓氏来搜索客户的详细信息。在账户详细信息页面,可以通过输入客户帐号来获取客户账户的详细信息。在这种情况下,当用户输入无效帐号时,将显示验证错误,并且用户输入的客户帐号将保留在屏幕上。当用户导航到客户资料链接并返回帐户详细信息屏幕时,先前输入的帐号将显示在 session 范围内。
处理此问题的最佳方法是什么?
- 我可以在
PhaseListener
的beforePhase
中添加一些代码,以便在用户导航到不同的菜单链接时从 session 中删除 bean 吗? - 我是否应该有某种初始化 block ,每次单击相关菜单链接时都可以调用它来清理 session bean 中的变量?
是否有任何最佳实践来处理这种情况?
最佳答案
您不应该在 session 作用域 bean 中存储请求或查看作用域数据。将 bean 放在请求或 View 范围内。新的 JSF2 View 范围可以在带有 RichFaces 的 JSF1 中通过添加 <a4j:keepAlive>
来实现。将请求作用域的 bean 引用到 View 。
关于java - JSF - 清除 session 范围内托管 bean 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8443506/