5

ドロップダウンと2つの入力フィールドを含むフォームがあります。

<h:selectOneMenu />
<h:inputText />
<h:inputText />

ドロップダウンの選択した値に応じて、入力フィールドの必須属性を条件付きにします。ユーザーがドロップダウンの最初の項目を選択する場合は、入力フィールドが必須である必要があります。ユーザーが2番目の項目を選択した場合、それらは必要ありません。

どうすればこれを達成できますか?

4

2 に答える 2

11

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'}代わりに使用してください。

于 2012-02-16T12:02:10.360 に答える
5

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'}" />
于 2012-02-16T12:05:25.730 に答える