如何清理会话中的特定视图

时间:2013-12-06 10:49:22

标签: jsf jsf-2

当javax.faces.STATE_SAVING_METHOD设置为server时,每个页面的视图状态将保存在会话映射中。如果我已经在某个视图中,并且如果我在浏览器中输入URL(GET请求)到同一页面,则将创建一个新视图。现在我想删除现有视图。如果我在get请求路径中包含关联的ViewId或作为GET请求参数,那么使用新的GET请求清理特定的早期视图的最佳方式和地点是什么。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

你做不到。至少不是通过标准API手段。让它过期。

如果由于目标服务器上的内存占用较少而担心内存使用,并且您打算在无状态模式下使用JSF,并且您正在使用Mojarra 2.1.19或更新版本,请使用

<f:view transient="true">

这样JSF根本不会保存视图状态。请记住,逻辑结果是您不能再使用视图范围。视图范围bean的行为类似于请求范围的bean。

另一种方法是降低会话中的(逻辑)视图的默认数量。另请参阅com.sun.faces.numberOfViewsInSession vs com.sun.faces.numberOfLogicalViews了解确切的工作情况。