2012-04-19 106 views
0

在我的應用程序中,我創建了一個嚮導。看起來我無法切換面板,因爲驗證在未顯示的面板上失敗。豐富的表單驗證: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,並使用控制器屬性對reRender正確的面板進行了替換。 – gadeynebram 2012-04-24 15:17:56

回答

0

我用常規面板替換了togglePanel,並使用控制器屬性重新調整了正確的面板。

1

要解決這個問題,請用a4j:region's替換你的f:子視圖。這將解決問題,因爲地區限制了服務器端處理(包括驗證)。