複数のコンポーネントを含む 1 つのフォームがあり、そのうちのいくつかには独自の検証があり、必須です。selectOneMenu
次に、リストに同じ 3 つの要素を持つコンポーネントもいくつかありselectItem
ます。commandButton
すべてのリストに同じ値を選択するために、3 つ定義しました (commandButton
可能な値ごとに 1 つ)。
JSF セクション
<table>
<tr>
<td>
<h:outputText value="ID:" />
</td>
<td>
<h:inputText value="#{MyClass.id}" id="inTxt_id" required="true">
<f:validator validatorId="CheckIDPattern" />
</h:inpuText>
<h:message for="inTxt_id" errorClass="error" />
</td>
</tr>
</table>
<table>
<tr>
<td>
<h:commandButton value="Select all opt1" action="#{MyClass.selectOpt1}" />
<h:commandButton value="Select all opt2" action="#{MyClass.selectOpt2}" />
<h:commandButton value="Select all opt3" action="#{MyClass.selectOpt3}" />
</td>
</tr>
<tr>
<td>
<h:outputText value="List 1:" />
</td>
<td>
<h:selectOneMenu value="#{MyClass.list1Val}">
<f:selectItems value="#{MyClass.listOfOptions}" />
</h:selectOneMenu>
</td>
<tr>
<td>
<h:outputText value="List 2:" />
</td>
<td>
<h:selectOneMenu value="#{MyClass.list2Val}">
<f:selectItems value="#{MyClass.listOfOptions}" />
</h:selectOneMenu>
</td>
</tr>
<tr>
//Many other selectOneMenu components...
</tr>
</table>
<h:commandButton action="#{MyClass.saveLists}" value="Submit" />
MyClass.java
public String selectOpt1(){
this.list1Val = 1;
this.list2Val = 1;
//...
return "";
}
//The same idea for selectOpt2 and selectOpt3.
このコンテキストでは、ユーザーが ID を入力せずに「すべて選択」ボタンの 1 つを押すとinputText
、エラー メッセージが表示されますが、フォームへの入力が完了していないと思われるため、これは望ましくありません。ユーザーが「リストの保存」ボタンを押したときに検証を実行したいだけです。
「すべて選択」ボタンに追加しようとしましimmediate="true"
たが、機能しますが、モデルからビューを更新せず、ユーザーは値が変更されたことを認識しません...実際には機能しません。
何を達成したいですか?最後のボタン(送信)のときに検証を実行したいだけです。そのため、ユーザーは以前に必須コンポーネントを入力しなくても、これらの「すべて選択」ボタンを使用できました。
私の文脈を理解していただければ幸いです。ご不明な点がございましたら、お気軽にお問い合わせください。前もって感謝します。