我对JSF支持bean范围有一些误解。我是JSF的新手,现在正在编写一个简单的项目,我的所有bean都有会话范围。但是,如果我的网站有很多用户,这意味着我的会话将非常大并杀死我的服务器。有些人告诉我,解决方案是使用请求范围bean。但是,例如,当我的页面必须经过验证并且验证失败时显示错误消息并保存所有用户输入时,在这种情况下我该怎么办?我正在尝试使用使用AJAX请求的组件,并希望我的请求bean不会被重建,但这不起作用(我正在使用<rich:datascroller>
)。
我认为我的JSF理解存在很大漏洞,如果有人解释在这种情况下我必须做些什么,或者将我与一些关于bean范围的好文章联系起来,我将不胜感激。
答案 0 :(得分:2)
范围定义了bean的生命周期。
在为一个HTTP请求提供服务期间请求范围bean,因此在分析用户输入和制定响应页面时都可以使用。因此,对于简单的验证和响应,我希望请求范围的bean是您所需要的 - 例外情况是,如果您将重定向发送回浏览器并提交新请求,那么您可能需要......
会话范围的bean在用户会话的生命周期中存活,即。跨越几个请求。会话可能会持续一段时间,但最终用户会退出,或者变得有问题并且他的会话会超时。因此,您拥有多少用户并不重要,只需要有多少用户同时活动。为每个用户保留一些会话数据是很常见的(至少是谁,也许是他最近查看过的东西)所以没有根本原因让人担心某些数据被保留。你只需要确保你保持整洁,不要把旧页面的数据保存得很长 - 也许只是一个“当前数据”bean或其他一些。