ユーザーがチェックボックスをクリックする必要がある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}"/>
このページには時間の問題はなく、チェックボックス、ボタンはすべて表示されています。ボタンを押す前にチェックボックスが選択されていない場合、検証メッセージが表示されると思います。
ところで、required = trueが実際に検証を実行しないのはJSF仕様ですか?