無効なフィールドに適用されるrequired=true検証に問題があります。
a4j:commandButton と、フォーム内に州のリストと国のリストを含む 2 つのドロップダウンがあります。どちらのドロップダウンにも required="true" 検証が適用されています。以下に示すように、タグ属性 disabled="true" を使用することで、州のドロップダウンが有効になり、国のドロップダウンがデフォルトで無効になります。
<h:selectOneMenu value="#{states}" required="true">
<f:selectItems>
</h:selectOneMenu>
と
<h:selectOneMenu value="#{countries}" disabled="true" required="true">
<f:selectItems>
</h:selectOneMenu>
シナリオ 1:状態ドロップダウンで何も選択せずに a4j:commandButton をクリックします。 結果:予期される状態ドロップダウンの必須フィールド検証エラー
ラジオ ボタン (フォームの外側) をクリックすると、州のドロップダウンが無効になり、以下に示すように jquery/javascript を使用して国のドロップダウンが有効になります。
$j('#stateDropdown').attr('disabled', 'disabled');
$j('#countryDropdown').removeAttr('disabled');
シナリオ 2:国ドロップダウンで何も選択せずに a4j:commandButton をクリックします。 結果:州と国の両方のドロップダウンで必須フィールドの検証エラーが発生しました。ただし、国ドロップダウンの検証エラーのみが予期されていました。
<h:selectOneMenu>
実行時に for タグによって生成された html コード:
jsf タグ属性を使用してドロップダウンを無効にする場合:<select disabled="disabled">...</select>
jqueryを使用してドロップダウンを無効にする場合:<select disabled="">...</select>
jqueryによって無効にされたフィールドをjsfが検証している理由を誰かが知っていますか?