Ajax 支持bean作用域是如何工作的?

Ajax 支持bean作用域是如何工作的?,ajax,jsf,javabeans,backing-beans,Ajax,Jsf,Javabeans,Backing Beans,我对JSF支持bean范围有一些误解。我是JSF新手,现在正在编写一个简单的项目,我所有的bean都有会话范围。但如果我的网站有很多用户,这意味着我的会话将非常非常大,并杀死我的服务器。有些人告诉我,解决方案是使用请求范围bean。但是,例如,当必须验证我的页面时,如果验证失败,则显示错误消息并保存所有用户输入,在这种情况下我可以做什么?我正在尝试使用使用AJAX请求的组件,希望我的请求bean不会被重构,但这不起作用(我使用的是) 我认为我对JSF的理解有一个很大的漏洞,如果有人解释我在这种情

我对JSF支持bean范围有一些误解。我是JSF新手,现在正在编写一个简单的项目,我所有的bean都有会话范围。但如果我的网站有很多用户,这意味着我的会话将非常非常大,并杀死我的服务器。有些人告诉我,解决方案是使用请求范围bean。但是,例如,当必须验证我的页面时,如果验证失败,则显示错误消息并保存所有用户输入,在这种情况下我可以做什么?我正在尝试使用使用AJAX请求的组件,希望我的请求bean不会被重构,但这不起作用(我使用的是


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

Scope定义了bean的生命周期

请求范围bean在一个HTTP请求的服务期间活动,因此在分析用户输入和制定响应页面时,它们都可用。因此,对于简单的验证和响应,我希望请求范围的bean是您所需要的—例外情况可能是,如果您将重定向发送回浏览器并提交新请求,那么您可能需要


会话范围的bean在用户会话的生命周期内有效,即跨多个请求。会话可能会持续一段时间,但最终用户会注销,或者变为quiscent,其会话会超时。所以,不管你有多少用户,一次有多少用户是活跃的。为每个用户保留一些会话数据是很常见的(比如至少是谁,也许还有他最近浏览过的内容),因此没有必要担心某些数据被保留。您只需要确保它保持整洁,不要将旧页面的数据保存得太长—可能只是一个“当前数据”bean或诸如此类的东西。

但是对于AJAX请求,我认为它不会导致新bean的构建,但确实会。我如何执行这个“简单的验证和响应”?我们是在讨论单个AJAX请求的服务吗?在这种情况发生之前,页面已经呈现了,对吗?我希望在Ajax请求/响应中使用单个请求范围bean,与绘制原始页面时使用的bean没有任何关系。现在,您可能正在使用一些“有用的”框架来做更多的工作?当您获得一个页面时,您执行请求,它呈现并发送请求。然后抛出请求范围的bean。然后,执行一个新的AJAX请求,该请求构建它可能需要的所有新bean并发送响应。因此,是的,AJAX请求将创建新的请求范围bean。毕竟,它们是AJAX requests.JSF2的目标dupe: