JSF 1.2:如何在同一视图上的回发中保持请求范围的托管 bean 处于活动状态?
是否可以在同一页面上的回发过程中保持请求作用域的 bean 处于活动状态?
一般的问题是,bean 在请求结束时被丢弃,并在每次表单提交时重新创建,例如动态操作的 disabled
、readonly
和 rendered 后面的布尔值
重置为默认值并导致表单不再按预期工作。
Is it possible to keep a request scoped bean alive across postbacks on the same page?
The general problem is, as the bean gets trashed on end of request and recreated on every form submit, for example the booleans behind dynamically manipulated disabled
, readonly
and rendered
get reset to their default values and cause the forms to not work as intented anymore.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我假设会话范围不是一个选项,否则这个问题就没有意义。
您可以使用 Tomahawk
。将以下行添加到页面的某处:
RichFaces
< a4j:keepAlive>
也做同样的事情:或者如果有空间,至少升级到 JSF 2.x 并将 bean 放在 view 范围内:
无论哪种方式,当您回发到同一视图并不断从操作方法返回
null
或void
时,将存在相同的 bean。另请参阅:
I'll assume that the session scope is not an option, otherwise this question makes little sense.
You can do it using Tomahawk
<t:saveState>
. Add the following line somewhere to the page:RichFaces
<a4j:keepAlive>
does also the same:Or if there is room, upgrade to at least JSF 2.x and put the bean in view scope:
Regardless of the way, the same bean will be there when you postback to the same view and keep returning
null
orvoid
from action methods.See also:
事实并非如此,除非您将 Bean 存储在某个位置,例如应用程序范围内的 Map,以便稍后检索它。
为什么不直接将其设置为会话范围呢?这就是会话范围的用途,因此同一会话期间的多个请求可以达到相同的状态。
Not really, unless you store the Bean somewhere e.g. a Map in application scope, to retrieve it later.
Why not just make it Session scoped? This is what Session scope is there for, so multiple Requests during the same Session can hit the same state.