2011-10-26 3 views
1

ビュースコープにバッキングBean Authorityがあり、このバッキングBeanにマップされたviewRoleseditRoleの2つのページがあります。1つのページから別のページに移動する際にバッキングBeanのプロパティを設定する(ビュースコープ)が動作しません。

editRoleページに移動するためのリンクがありますviewRolesページでは:

<h:form> 
    <h:commandLink value="#{au.displayName}" action="pretty:editRole"> 
    <f:setPropertyActionListener target="#{authority.authorityId}" value="#{au.id}"/>     
    </h:commandLink> 
</h:form> 

それは他のページに移動しますが、プロパティはBeanがビューの範囲であっても、設定して取得されていません両方のページが同じバッキングBeanにマップされます。ビュースコープをセッションスコープに変更した場合にのみ機能します。

注:私のBeanはSpringで管理されていますが、このビューのスコープはJSFのデフォルト値@ViewScopedではありません。これはhttp://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/で見つかったカスタムのものです。また、私はPrettyFacesを使ってナビゲーションを管理しています。

上記のシナリオは、実際のJSF2 @ViewScoped@ManagedBeanで動作するはずですか、またはSpringやその他の問題に関連する問題ですか? にご相談ください。

+0

同じ質問http://ocpsoft.com/support/topic/setting-property-in-backing-bean-に掲載コマンドリンクで1つのページから別のページへのナビゲート中 – Arjan

答えて

5

いいえ、これもJSF2 @ViewScoped beanでは機能しません。基本的にはビューにナビゲートしています。 またはvoidをアクションメソッドで返すことによって、同じビューとやり取りしている限り、@ViewScopedのBeanは存続します。コマンドリンクに<f:param>をターゲットビューの<f:viewParam>と組み合わせて使用​​する必要があります。

など。

<h:form> 
    <h:commandLink value="#{au.displayName}" action="pretty:editRole"> 
    <f:param name="authorityId" value="#{au.id}"/>     
    </h:commandLink> 
</h:form> 

とターゲットビューで:

<f:metadata> 
    <f:viewParam name="authorityId" value="#{authority.authorityId}" 
     required="true" requiredMessage="Invalid page access. Please use a link from within the system." 
    /> 
</f:metadata> 
関連する問題