2013-02-10 5 views
6
ausgewählt ist

I JSF-Seite zu schreiben, die Benutzer erfordert auf eine Checkbox anklicken (ähnlich den Lizenzvertrag zu akzeptieren) I anstelle folgenden Code haben:JSF selectBooleanCheckbox erforderlich = true nicht überprüft, wenn Checkbox

<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}"/> 

Ich setze die erforderliche = wahr, aber es gibt keine Validierung für die Checkbox. Ich sehe keine Nachricht, die auf der Seite für das Kontrollkästchen angezeigt wird.

Ich habe versucht, f: validateRequired, auch das funktioniert nicht.

<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}"/> 

Die Seite muß nicht jederzeit Problem, Checkbox, Knöpfe alles sichtbar ist meine Erwartung eine Bestätigungsnachricht bekommen, wenn Checkbox nicht vor-Taste gedrückt wird, ausgewählt wird.

BTW, ist es JSF-Spezifikation, die erforderlich ist = True führt keine Validierung wirklich aus ??

+0

required = true prüft, ob der Wert nicht leer ist, sowohl "true" als auch "false" sind keine leeren Werte, daher wird die Validierung bestanden. Wenn das Kontrollkästchen aktiviert werden soll, sollte ein anderer Typ von Validator verwendet werden. – Osw

Antwort

17

required=true für JSF-Eingabefelder bedeutet, dass der Wert des Feldes nicht leer oder null sein darf. Dies scheint ein Fehler in der jsf-Implementierung zu sein, aber wenn h:selectBooleanCheckbox nicht überprüft wird, ist der Wert false und nicht leer oder null. Dies löst die Validierung nicht aus. BalusC has written a nice post about this here. Er hat dafür einen Validator implementiert, der Ihnen hilft, die Situation zu überwinden. Danke BalusC.

+3

Es ist auch in OmniFaces: http://showcase.omnifaces.org/validators/RequiredCheckboxValidator – BalusC