2013-06-03 31 views
0

我有一個小小的問題,下面的代碼。我們必須使用booleancheckboxes,我們有12個,正如你可以在代碼中看到的一樣。我想創建一個驗證器,因此用戶必須至少選擇其中的一個,但這並不容易,因爲所有複選框都是單獨的,並且由於循環,我也不能給它們ID-s。驗證它的正確方法是什麼,或者甚至可能如何。驗證多個booleancheckboxes

<rich:dataGrid id="checkboxes" value="#{MonitorBean.signalingOptions}" var="Signal" columns="3" elements="12" first="0"> 
         <f:facet name="header"> 
          <h:outputText value="Signaling options"></h:outputText> 
         </f:facet> 

         <rich:panel bodyClass="pbody"> 
          <h:panelGrid columns="2"> 
           <h:selectBooleanCheckbox value="#{Signal.toMonitor}" required="true" disabled="enabled"> 
           <!--<f:validator validatorId="util.CheckboxValidator" />--> 
            <h:message for="checkboxes" styleClass="errors"/> 
           </h:selectBooleanCheckbox> 

           <h:outputText value="#{Signal.signalName}"></h:outputText>       
         </h:panelGrid>      
         </rich:panel>     
        </rich:dataGrid> 

感謝您的幫助!

回答

0

您需要驗證器來檢查所有字段(它們再次映射到您的處理程序代碼中的某個字段)。 也許this answer有幫助。

+0

我不認爲這是有效的,因爲我不能給我的複選框的名稱和屬性一個接一個,因爲它們是由一個循環產生或不是? –

+0

@enricko您不需要指定id,但當然您需要將組件映射到Java代碼中的成員(如果使用用戶輸入,您肯定已經完成了這些操作)。例如,請參閱[this](http://www.andygibson.net/blog/tutorial/binding-dynamic-multi-select-checkboxes-with-jsf/)。 –

+0

是的,但是jsf驗證部分發生在組件被寫入映射之前,所以我不能使用處理程序代碼,或者我只是沒有通過示例得到它如何與驗證程序類一起使用。 –