JSF selectBooleanCheckbox required=true не проверяет, установлен ли флажок

Я пишу страницу JSF, которая требует, чтобы пользователи нажимали на флажок (аналогично принятию лицензионного соглашения) у меня есть следующий код:

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

Я устанавливаю required=true, но для флажка нет проверки. Я не вижу никакого сообщения, отображаемого на странице для флажка.

Я пробовал f: validateRequired, даже это не работает.

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

на странице нет проблем со временем, флажков, кнопок все видимое, мое ожидание получает сообщение проверки, когда флажок Не выбран до нажатия кнопки.

кстати, это спецификация JSF, которая required=true на самом деле не выполняет никакой проверки??

1 ответов


required=true для полей ввода jsf означает, что значение поля не должно быть пустым или нулевым. Это похоже на ошибку в реализации jsf, но когда h:selectBooleanCheckbox не проверяется, его значение равно false и не пуст или null. Таким образом, это не запускает проверку. BalusC написал хороший пост об этом здесь. Для этого он реализовал валидатор, который поможет вам преодолеть ситуацию. Спасибо BalusC.