java - JSF - 清除 session 范围内托管 bean 中的值

标签 java jsf

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

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

  1. 我可以在 PhaseListenerbeforePhase 中添加一些代码,以便在用户导航到不同的菜单链接时从 session 中删除 bean 吗?
  2. 我是否应该有某种初始化 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/

相关文章:

java - 有什么方法可以使用 Checkstyle 强制执行枚举类型命名约定吗?

java - 执行捕获优先级

jsf - 如果用户未在 JSF 中登录,则重定向到登录页面

javascript - 如何渲染 h :panelGroup inside ui:repeat based on value from javascript?

JSF 2 复选框和 bool getter

jsf - 使用 <c :if> with composite component 时出现重复 ID 异常

java - 当 DataProvider 上的并行设置为 true 时,并行执行测试会引发异常 - TestNG

java - 解析 ksoap2 响应

java - 在 Java SE 中使用 CDI 和 JPA 的最简单方法是什么?

java - Core Java/JSF/Servlet 中状态模式的示例是什么?