0

私のアプリケーションでは、ウィザードを作成しました。表示されていないパネルで検証に失敗したため、パネルを切り替えることができないようです。

ウィザードのレイアウトは次のとおりです。

<rich:modalPanel>
    <f:facet name="header">
        <h:outputText value="#{messages['motivation.title']}" />
    </f:facet>
    <h:messages />
    <rich:togglePanel id="motivationTogglePanel" switchType="ajax" initialState="wiz1" rendered="#{motivationController.enabled}">
        <f:facet name="wiz1">
            <f:subview id="wiz1sub"> 
                <rich:toggleControl value="next" switchToState="wiz2"></rich:toggleControl>
            </f:subview>
        </f:facet>
        <f:facet name="wiz2">
            <f:subview id="wiz2sub"> 
                <h:selectManyCheckbox id="checkBoxList1" required="true" value="#{controller.selectedValue}" layout="pageDirection">
                    <f:selectItems value="#{controller.options}"></f:selectItems>
                </h:selectManyCheckbox>
            </f:subview>
        </f:facet>   
</rich:modalPanel>

modalPanelは、wiz1パネルから正しく表示されます。これで、ユーザーがtoggleControlをクリックしても、何も起こりません。コンポーネントから必須フィールドを削除すると、切り替えが機能します。

現在表示されているコンポーネントのみを適切に検証するにはどうすればよいですか?

4

2 に答える 2

1

この問題を解決するには、f:subview を a4j:region に置き換えます。リージョンはサーバー側の処理 (検証を含む) を制限するため、これで問題は解決します。

于 2012-05-23T14:02:47.093 に答える
0

togglePanel を通常のパネルに置き換え、コントローラー プロパティを使用して正しいパネルを再レンダリングしました。

于 2012-05-03T14:28:41.813 に答える