JSF的Managed Bean的生命范围,一般人都知道:
request 范围,意味着这个Bean在请求结束之后,就结束了生命周期。而Session范围,意味着这个Bean在Session的结束生命时,他才结束生命。
举个例子:Request范围内的Bean,假设在Page1,通过一个Managed Bean的动作方法,到了Page2,那么刷新Page2,如果Page2中没有和Page1中对数据的类似处理,那么Page2中的数据就会丢失。
Session内的bean的话,只要Session不结束生命,Page上绑定的数据就不会消失。
题外话:ASP.net2.0的ViewState做的很好,它把状态记录在客户端,但效果类似JSF的Session,比Session的好处是:不依赖与Session的生命周期。
在用JSF的Managed
Bean的Request和Session时,特别注意数据的绑定。Request范围的话,在每次向Server发请求时,都会绑定Managed
Bean中定义的数据。但是Session范围的话,仅仅在Session范围内读写数据,不会在重新绑定Managed Bean中定义的数据。