如何销毁会话范围的bean?
这样做的目的是控制bean的生命周期,使其仅在Web应用程序中的选项卡处于活动状态时才存在.(在webapp中使用基于Ajax的选项卡导航)
有没有更好的方法呢?(Custom Scoped Beans?)
会话范围 bean在第一次HttpRequest涉及此bean时创建.session无效时销毁.您也可以通过从中删除它来手动销毁它HttpSession,或者sessionMap(通过FacesContext).
事实是,创建会话范围的 bean只会在选项卡视图中生效,这是不合逻辑的.为此,定义Custom scoped bean会更好,但首先要考虑它:
好吧,它可能非常棘手,想象用户只是经常在标签之间切换,而你一遍又一遍地重新创建bean.更糟糕的是,如果您从constructor或从DB中获取数据@PostConstruct.它不会真正有效.
我的意见是你应该忘掉它(除非你出于其他目的需要它)并选择一个View范围的 bean.这个bean在访问视图后会被初始化,直到您不切换到另一个视图 - 因此在每个选项卡上都没有DB提取(仍然是相同的视图).IMO最好一次获取大量数据,例如.15次......如果你没有获取任何数据,那么请明确选择View作用域.但就像我说的那样,这只是我的意见.
如果您买不起View作用域,请转到Custom scoped bean,但绝对不是Session作用域.
进一步阅读:JSF 2.0上的BalusC
希望它有所帮助!
| 归档时间: |
|
| 查看次数: |
11361 次 |
| 最近记录: |