gpt4 book ai didi

JSF 属性引用范围内的对象,其生命周期比目标范围 View 短

转载 作者:行者123 更新时间:2023-12-04 04:23:33 27 4
gpt4 key购买 nike

我有一个 View 范围的托管 bean,其托管属性绑定(bind)到查询字符串参数。 JSF 给了我熟悉的异常:

javax.faces.FacesException:

Property reset references object in a scope with shorter lifetime than the target scope session

例如:

<managed-bean>
<managed-bean-name>userBean</managed-bean-name>
<managed-bean-class>project.UserBean</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
<managed-property>
<property-name>reset</property-name>
<value>#{param['reset']}}</value>
</managed-property>
</managed-bean>

有解决办法吗?

最佳答案

这是设计使然。托管属性的范围不能小于托管 bean 本身的范围。托管属性仅在 bean 的构造期间设置(在您的情况下因此是 View 的开始),但在同一 View 范围内的任何后续请求中,请求参数可能不再有效并且 bean 可能会变为无效状态。这种设计限制阻止了这种情况。

无论如何要实现特定的功能需求,只需使用 <f:viewParam>相反。

<f:metadata>
<f:viewParam name="reset" value="#{userBean.reset}" />
</f:metadata>

另见:

关于JSF 属性引用范围内的对象,其生命周期比目标范围 View 短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11755679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com