JSF 1.2:如何在同一视图的回发中保持请求作用域的托管bean活动



是否有可能在同一页面的回发中保持请求作用域bean的活动?

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

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

你可以使用战斧<t:saveState>。在页面的某处添加以下行:

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

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

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

或者如果有空间,至少升级到JSF 2。将bean放在视图作用域中:

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

无论哪种方式,当您回发到相同的视图并继续从操作方法返回nullvoid时,相同的bean将存在。

参见:

  • 如何选择合适的bean scope?
  • 管理bean中View和Request作用域的区别

不完全是这样,除非您将Bean存储在某个地方,例如应用程序作用域中的Map,以便稍后检索它。

为什么不把它设为Session作用域呢?这就是Session作用域的作用,所以同一个Session中的多个请求可以达到相同的状态。

相关内容

  • 没有找到相关文章

最新更新