2012-04-19 49 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:子视图。这将解决问题,因为地区限制了服务器端处理(包括验证)。