2013-02-10 12 views
6

io a scrivere la pagina JSF, che richiede agli utenti di cliccare su una casella di controllo (simile ad accettare il contratto di licenza) Ho seguente codice nel luogo:JSF selectBooleanCheckbox richiesto = true non convalida se sia selezionata

<h:selectBooleanCheckbox value="#{checkBoxManagedBean.checkBoxValue}" required="true" id="jsfcheckBox" > 
</h:selectBooleanCheckbox> 
<h:outputLabel value="accept rule label" for="jsfcheckBox" /> 
<h:message for="jsfcheckBox"/> 
<br/> 
<h:commandButton id="loginButton" value="Submit" 
    action="#{checkBoxManagedBean.testAction}"/> 

Sto impostando il valore richiesto = true, ma non ci sono convalide in corso per la casella di controllo. Non vedo alcun messaggio visualizzato nella pagina per la casella di controllo.

Ho provato f: validatoRequired, anche questo non funziona.

<h:selectBooleanCheckbox value="#{checkBoxManagedBean.checkBoxValue}" required="true" id="jsfcheckBox" > 
     <f:validateRequired for="jsfcheckBox"></f:validateRequired> 
     </h:selectBooleanCheckbox> 
     <h:outputLabel value="CheckBox label" for="jsfcheckBox" /> 
     <h:message for="jsfcheckBox"/> 
     <br/> 
     <h:commandButton id="loginButton" value="Submit" 
        action="#{checkBoxManagedBean.testAction}"/> 

La pagina doesnt hanno alcun problema di tempo, casella di controllo, pulsanti tutto visibile, la mia aspettativa è sempre un messaggio di convalida, quando casella di controllo non sia selezionata prima si preme il pulsante.

BTW, specifica JSF che richiede = true non esegue realmente alcuna convalida ??

+0

required = true sta convalidando se il valore non è vuoto, sia 'true' che 'false' non sono valori vuoti, quindi la convalida è superata. Se si desidera che la casella di controllo sia selezionata, è necessario utilizzare un altro tipo di validatore. – Osw

risposta

17

required=true per i campi di input jsf significa che il valore del campo non deve essere vuoto o nullo. Sembra un bug nell'implementazione di jsf, ma quando h:selectBooleanCheckbox non è selezionato, il suo valore è false e non vuoto o null. Quindi questo non innesca la convalida. BalusC has written a nice post about this here. Ha implementato un validatore per questo che ti aiuta a superare la situazione. Grazie BalusC.

+3

È anche in OmniFaces: http://showcase.omnifaces.org/validators/RequiredCheckboxValidator – BalusC