我有一些menulinks,每个都与一个会话bean相关联。由于bean在会话中,因此当我在不同的菜单链接之间移动时,将保留这些值。例如,假设有2个菜单链接 - 客户资料和帐户详细信息。在客户资料中,可以通过输入名字和姓氏来搜索客户的详细信息。在“帐户详细信息”页面中,可以通过输入客户帐号来获取客户帐户的详细信息。在这种情况下,当用户输入无效的帐号时,将显示验证错误,并且用户输入的客户帐号将保留在屏幕上。当用户导航到客户配置文件链接并返回到帐户详细信息屏幕时,先前输入的帐号将显示为会话范围。
处理此问题的最佳方法是什么?
beforePhase
PhaseListener
中使用一些代码从会话中删除bean吗?有没有最佳做法来处理这种情况?
答案 0 :(得分:2)
您不应在会话范围bean中存储请求或查看范围数据。将bean放在请求或视图范围中。新的JSF2视图范围可以在JSF1中使用RichFaces,通过向视图添加引用请求范围bean的<a4j:keepAlive>
来实现。
答案 1 :(得分:1)
我们使用选项2,即当我们点击相应的链接时,托管bean被“重置”。
但是,您可能希望查看Seam Faces,因为它引入了一些可能提供您所需内容的范围(例如,会话范围)。