[英]JSF 1.2: How to keep request scoped managed bean alive across postbacks on same view?
是否可以在同一页面上的回发中保持请求范围的 bean 处于活动状态?
一般的问题是,由于 bean 在请求结束时被丢弃并在每个表单提交时重新创建,例如动态操作disabled
、 readonly
和rendered
后面的布尔值被重置为默认值,并导致 forms 不再按预期工作。
我假设 session scope不是一个选项,否则这个问题毫无意义。
您可以使用Tomahawk <t:saveState>
来完成。 将以下行添加到页面的某处:
<t:saveState value="#{bean}" />
<a4j:keepAlive beanName="#{bean}" />
或者如果有空间,至少升级到 JSF 2.x 并将 bean 放在视图scope 中:
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
// ...
}
无论采用哪种方式,当您回发到同一个视图并继续从操作方法返回null
或void
时,都会出现同一个 bean。
不是真的,除非您将 Bean 存储在某处,例如应用程序 scope 中的 Map,以便稍后检索它。
为什么不将其设为 Session 范围? 这就是 Session scope 的用途,因此同一个 Session 期间的多个请求可以达到同一个 Z9ED39E28EA9312EFA573E
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.