是否可以在同一页面上的回发中保持请求范围的bean活动?
一般的问题是,当bean在请求结束时被删除并在每个表单提交时重新创建,例如动态操作后面的布尔值 disabled
, readonly
和 rendered
重置为默认值并导致表单不再按预期工作。
是否可以在同一页面上的回发中保持请求范围的bean活动?
一般的问题是,当bean在请求结束时被删除并在每个表单提交时重新创建,例如动态操作后面的布尔值 disabled
, readonly
和 rendered
重置为默认值并导致表单不再按预期工作。
我假设会话范围是 不 一个选项,否则这个问题没有意义。
你可以用它来做 钺 <t:saveState>
。在页面的某处添加以下行:
<t:saveState value="#{bean}" />
RichFaces的 <a4j:keepAlive>
也是一样的:
<a4j:keepAlive beanName="#{bean}" />
或者如果有空间,至少升级到JSF 2.x并将bean放入 视图 范围:
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
// ...
}
无论如何,当您回发到同一视图并继续返回时,同一个bean将存在 null
要么 void
来自行动方法。
我假设会话范围是 不 一个选项,否则这个问题没有意义。
你可以用它来做 钺 <t:saveState>
。在页面的某处添加以下行:
<t:saveState value="#{bean}" />
RichFaces的 <a4j:keepAlive>
也是一样的:
<a4j:keepAlive beanName="#{bean}" />
或者如果有空间,至少升级到JSF 2.x并将bean放入 视图 范围:
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
// ...
}
无论如何,当您回发到同一视图并继续返回时,同一个bean将存在 null
要么 void
来自行动方法。
不是真的,除非你将Bean存储在某处,例如应用程序范围中的Map,以便稍后检索它。
为什么不把它作为会话范围?这就是Session范围的含义,因此同一Session期间的多个请求可以达到相同的状态。