8

ユーザーがチェックボックスをクリックする必要がある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仕様ですか?

4

1 に答える 1

22

required=truejsf入力フィールドの場合、フィールドの値が空またはnullであってはならないことを意味します。これはjsf実装のバグのようですが、h:selectBooleanCheckboxチェックされていない場合、その値はfalse空ではなく、またはnullです。したがって、これは検証をトリガーしません。BalusCはこれについてここに素晴らしい投稿を書いています。彼はあなたが状況を克服するのを助けるこれのためのバリデーターを実装しました。BalusCに感謝します。

于 2013-02-10T11:17:31.087 に答える