JSF中managedBean的生命周期问题

stenlylee 2008-03-24
比如有这种情况
我在配置文件中注册了一个managedBean,scope怎么设置
然后我怎么控制,在我想要他创建的时候再创建,要他失效的时候就失效?
如果放在session中,那么他就会自动创建并在整个回话周期中存在
如果设成request,那么只有一次请求中存在
在配置或者在代码里面用什么方法控制这个bean在我想要的几个连续request中有效并保持状态?
tailsherry 2008-03-25
如果你的这个bean被重复频繁使用,每次请求都较上一次不一样,设置为request最佳。除此之外,建议还是采用session的方式,最大限度的节省资源。

所以,建议你采用session来处理这个ManagedBean, 在请求进入页面之前,通过faceContext获取这个session bean的实例,然后通过一个Public的方法加载刷新这个bean里面的数据。

Chamjoneu 2008-03-25
1. 可以使用seam 的 conversation 或者 business生命周期

2. 不用seam的话 可以自己扩展jsf 的phaselistener 然后在faces-config.xml 配置<lifecycle>
dr.han 2008-04-10
如果不想放置在session中,但又想在几次提交中都使用这个bean,那么建议这样实现
首先把bean的scope配置为request
同时在请求的页面增加<x:savestate value="YourBeanName"
Global site tag (gtag.js) - Google Analytics