2009-07-16 116 views
0

我对JSF支持bean作用域存在一些误解。我是JSF的新手,现在正在编写一个简单的项目,我的所有bean大多都有会话范围。但是,如果我的网站会有很多用户,这意味着我的会话会非常大,并且会终止我的服务器。有些人告诉我,解决方案是使用请求范围bean。但是,例如,当我的页面必须经过验证并且验证失败时显示错误消息并保存所有用户输入,那么在这种情况下我该怎么办?我尝试使用使用AJAX请求的组件,并希望我的请求bean不会重建,但这不起作用(我正在使用<rich:datascroller>)。后台bean作用域如何工作?

我想我的JSF理解有很大的漏洞,如果有人解释我必须在这种情况下做什么,或者将我关于bean范围的一些好文章链接起来,我将不胜感激。

+0

这里JSF2的针对性延迟:http://stackoverflow.com/questions/7031885/how-to-choose-the-right-bean-scope – BalusC 2014-02-05 08:20:52

回答

3

范围定义了bean的生命周期。

在服务一个HTTP请求的过程中请求作用域bean处于活动状态,因此在您分析用户输入并制定响应页时,它们都可用。因此,对于简单的验证和响应,我希望请求范围的bean成为您需要的东西 - 例外情况是,如果您发送重定向回浏览器并提交新请求,那么您可能需要...

会话范围的bean活在用户会话的生命周期中,即。跨几个请求。会话可能会持续一段时间,但最终用户退出,或者变得不稳定,会话超时。所以,你有多少用户并不重要,有多少人同时活跃。为每个用户保留一些会话数据是非常常见的(至少像是谁,也许是他最近浏览过的东西),所以没有根本理由担心某些数据被保留。你只需要确保你保持整洁,不要让旧页面的数据保持很长 - 也许只是一个“当前数据”bean或者其他类似的东西。

+0

但是,与AJAX请求,我认为它不会导致新的bean建设,但确实如此。我怎样才能执行这个“简单验证和响应”? – aindl 2009-07-17 13:12:14