小编tcp*_*mer的帖子

如何(以及何时?)在 JSF 2.0 中删除会话范围的 bean

背景:我有一个使用 MyFaces 的 JSF 2.0 应用程序。使用这个应用程序,用户将通过浏览许多不同的 JSF 页面来创建一个复杂的“小部件”。我将托管 bean 存储在会话范围内,并在用户浏览每个页面时填充属性。一旦他们完成组装“小部件”,他们就会想要创建一个全新的“小部件”并重复该过程。我的问题是,如何在不中断 JSF 生命周期的情况下从会话中完全(并且安全地)删除托管 bean?

我已经看到类似问题的其他回复表明您可以使会话无效,并且您还可以通过 FacesContext 访问 HttpSession 并以这种方式删除 bean。我不希望用户必须注销或再次登录,也不想使整个会话无效。假设我需要通过 FacesContext 访问 HttpSession 并删除 bean,那么在 JSF 生命周期中何时是安全执行此操作的最合适的位置,以便问题不会在循环的其余部分级联?我想确保当用户开始创建下一个“小部件”的过程时,JSF 创建一个新的会话 bean 没有问题。

我也很想知道为什么 JSF 中没有一种机制来使这更容易。是否有其他一些我应该采用的方法更符合预期的 JSF 模式?这里我不能使用 View Scope,因为托管 bean 在完成之前会经过几个不同的页面和视图。

提前致谢!

jsf-2

4
推荐指数
1
解决办法
9731
查看次数

标签 统计

jsf-2 ×1