11

是否可以在同一页面上的回发中保持请求范围的 bean 处于活动状态?

一般的问题是,由于 bean 在请求结束时被丢弃并在每次提交表单时重新创建,例如动态操作背后的布尔值disabledreadonlyrendered重置为其默认值并导致表单不再按预期工作。

4

2 回答 2

16

我假设会话范围不是一个选项,否则这个问题没有什么意义。

您可以使用Tomahawk<t:saveState>来完成。将以下行添加到页面的某处:

<t:saveState value="#{bean}" />

RichFaces<a4j:keepAlive>也做同样的事情:

<a4j:keepAlive beanName="#{bean}" />

或者如果有空间,至少升级到 JSF 2.x 并将 bean 放在视图范围内:

@ManagedBean
@ViewScoped
public class Bean implements Serializable {
    // ...
}

null无论采用哪种方式,当您回发到同一个视图并继续返回或void从操作方法返回时,同一个 bean 将在那里。

也可以看看:

于 2011-05-05T12:01:33.977 回答
0

不是真的,除非您将 Bean 存储在某个地方,例如应用程序范围内的 Map,以便稍后检索它。

为什么不将其设为 Session 范围?这就是 Session 范围的用途,因此同一 Session 期间的多个请求可以达到相同的状态。

于 2011-05-05T12:00:00.477 回答