繁体   English   中英

JSF - 清除会话范围内托管bean中的值

[英]JSF - Clearing values in managed beans in session scope

我有一些menulinks,每个都与一个会话bean相关联。 由于bean在会话中,因此当我在不同菜单链接之间移动时,将保留这些值。 例如,假设有2个菜单链接-客户资料和帐户详细信息。 在客户资料中,可以通过输入名字和姓氏来搜索客户的详细信息。 在“帐户详细信息”页面中,可以通过输入客户帐号来获取客户帐户的详细信息。 在这种情况下,当用户输入无效的帐号时,将显示验证错误,并且用户输入的客户帐号将保留在屏幕上。 当用户导航到客户配置文件链接并返回到帐户详细信息屏幕时,先前输入的帐号将显示为会话范围。

处理这个问题的最佳方法是什么?

  1. 我可以在PhaseListener beforePhase中使用一些代码,以便在用户导航到其他菜单链接时从会话中删除bean吗?
  2. 我是否应该使用某种初始化块,每次单击相关菜单链接时都可以调用它来清理会话bean中的变量?

是否有最佳实践来处理这种情况?

您不应该在会话范围bean中存储请求或查看范围数据。 将bean放在请求或视图范围中。 新的JSF2视图范围可以在JSF1中使用RichFaces通过添加<a4j:keepAlive>将请求范围的bean引用到视图来实现。

我们使用选项2,即当我们单击相应的链接时,托管bean被“重置”。

但是,您可能希望查看Seam Faces,因为它引入了一些可能提供所需内容的范围(例如,会话范围)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM