2012-04-19 20 views
0

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

ウィザードは、このレイアウトを持っている:

<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をクリックすると何も起こりません。必要なフィールドをコンポーネントから削除すると、切り替えが機能します。

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

+0

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

答えて

0

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

1

問題を解決するには、f:subviewの代わりにa4j:regionを使用します。これにより、領域によってサーバー側の処理(検証を含む)が制限されるため、問題が解決されます。