【问题标题】:How do backing bean scopes work?支持 bean 范围如何工作?
【发布时间】:2010-11-11 13:30:28
【问题描述】:

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

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

【问题讨论】:

标签: ajax jsf javabeans backing-beans


【解决方案1】:

范围定义 bean 的生命周期。

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

会话范围的 bean 在用户会话的整个生命周期内都存在,即。跨越多个请求。会话可能会持续一段时间,但最终用户会注销,或者变得静止,并且他的会话会超时。因此,您拥有多少用户并不重要,重要的是有多少用户同时处于活动状态。为每个用户保留一些会话数据是很常见的(至少像谁是,也许是他最近查看的内容),因此没有根本理由担心保留一些数据。您只需要确保保持整洁,不要将旧页面的数据保存得非常长 - 也许只是一个“当前数据”bean 或类似的。

【讨论】:

  • 但是对于 AJAX-request,我认为它不会导致新的 bean 构造,但它确实会。我该如何执行这个“简单的验证和响应”?
  • 我们是在讨论单个 AJAX 请求的服务吗?在这发生之前,页面已经被渲染了,对吧?我希望在该 Ajax 请求/响应中使用单个请求范围 bean,与绘制原始页面时使用的任何 bean 无关。现在也许你正在使用一些“有用”的框架,它做得更多?
  • 当您获得一个页面时,您会发出请求,它会呈现并发送回请求。然后抛出请求范围的bean。然后,您执行一个新的 AJAX 请求,该请求构建它可能需要的所有新 bean 并发送响应。所以是的,AJAX 请求将创建新的 Request 范围 bean。毕竟,它们是 AJAX 请求。
猜你喜欢
  • 2011-04-19
  • 2012-03-16
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2011-09-28
  • 2013-04-19
相关资源
最近更新 更多