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" |