3

クエリ文字列パラメーターにバインドされた管理プロパティを持つビュー スコープのマネージド Bean があります。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>

これを解決するアイデアはありますか?

4

1 に答える 1

3

これは仕様によるものです。管理プロパティは、管理対象 Bean 自体のスコープよりも狭いスコープを持つことはできません。管理プロパティは、Bean の構築中にのみ設定されます (この場合はビューの開始です) が、同じビュー スコープ内の後続のリクエストでは、リクエスト パラメータが無効になる可能性があり、Bean が無効になる可能性があります。州。この設計上の制限により、それが妨げられます。

とにかく特定の機能要件を達成するには、<f:viewParam>代わりに使用してください。

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

以下も参照してください。

于 2012-08-01T18:04:39.897 に答える