ドロップダウンと2つの入力フィールドを含むフォームがあります。
<h:selectOneMenu />
<h:inputText />
<h:inputText />
ドロップダウンの選択した値に応じて、入力フィールドの必須属性を条件付きにします。ユーザーがドロップダウンの最初の項目を選択する場合は、入力フィールドが必須である必要があります。ユーザーが2番目の項目を選択した場合、それらは必要ありません。
どうすればこれを達成できますか?
ドロップダウンと2つの入力フィールドを含むフォームがあります。
<h:selectOneMenu />
<h:inputText />
<h:inputText />
ドロップダウンの選択した値に応じて、入力フィールドの必須属性を条件付きにします。ユーザーがドロップダウンの最初の項目を選択する場合は、入力フィールドが必須である必要があります。ユーザーが2番目の項目を選択した場合、それらは必要ありません。
どうすればこれを達成できますか?
required
ドロップダウンをビューにバインドし、属性でその値を直接確認するだけです。
<h:selectOneMenu binding="#{menu}" value="#{bean.item}">
<f:selectItem itemValue="first" itemLabel="First item" />
<f:selectItem itemValue="second" itemLabel="Second item" />
</h:selectOneMenu>
<h:inputText value="#{bean.input1}" required="#{menu.value eq 'first'}" />
<h:inputText value="#{bean.input2}" required="#{menu.value eq 'first'}" />
例は現状のままであることに注意してくださいbinding
。ここでは絶対にBeanプロパティに設定しないでください。「バインディング」属性はJSFでどのように機能しますか?も参照してください。いつ、どのように使用する必要がありますか?
また、コンポーネントの順序が重要であることに注意してください。メニューがツリーの入力の下にある場合は、#{menu.submittedValue eq 'first'}
代わりにを使用してください。または、それから独立したい場合は、#{param[menu.clientId] eq 'first'}
代わりに使用してください。
JSF 2.0を使用していると仮定します。SelectOneListBoxをajaxで実行し、リストボックスの変更時に入力フィールドを再レンダリングします。
簡単なスケッチ:
<h:selectOneMenu value="#{myBean.myMenuValue}">
<f:ajax render="input1"/>
..
</h:selectOneMenu>
<h:inputText id="input1" value="#{myBean.myInputValue}"
required="#{myBean.myMenuValue == 'firstEntry'}" />