3

ページに h:selectOneMenu コンポーネントがあります。ユーザーはそこで「はい」または「いいえ」を選択する必要があります。初期値は null (「不明」というラベルが付いています) です。Bean ではブール値なので、null が可能です。ユーザーが有効な値 (「はい」など) を選択すると、[次へ] がヒットtrueし、Bean に保存されます。

ユーザーはこのページに戻り、有効な値ではない「不明」を選択できます。ユーザーが [次へ] をクリックすると、エラー メッセージが表示されます。それは問題ありませんが、値は「Yes」に変更されます。Bean から更新されます。このようにして、ユーザーが入力した内容が変更されますが、これは必須の動作ではありません。ユーザーの価値を維持することは可能ですか?

<h:form id="co">
  <h:selectOneMenu id="isCeded"
                   value="#{bean.boolValue}"
                   required="true"
                   requiredMessage="#{msgs.please_select_value}">
    <f:selectItem itemLabel="#{msgs.unknown}"/>
    <f:selectItem itemValue="true" itemLabel="#{msgs.yes}"/>
    <f:selectItem itemValue="false" itemLabel="#{msgs.no}"/>
    <f:ajax execute="@this" render="isCededMsg"/>
  </h:selectOneMenu>*
  <h:message id="isCededMsg" for="isCeded" errorClass="invalid"/>

  <h:commandButton id="submit" value="Next" action="#{bean.submit}" />
</h:form>

奇妙なことに、この動作は、null が有効な値ではないフィールドにユーザーが null を入力した場合にのみ発生します。たとえば、ユーザーが検証済みのテキスト フィールドに別の無効な値を入力した場合 (例: 10 桁しか許可されていない 20 桁)、ユーザーが入力した無効な値は [次へ] をクリックした後も残ります。エラーメッセージのみが表示されます。

4

1 に答える 1

0

これはバグのようで、修正されているようには見えません。この質問に記載されている JIRA リンクを参照してください。

質問とJIRAの問題には解決策があります。MenuRenderer を拡張し、JIRA の問題の最後に記載されているパッチを適用したコードで renderOption メソッドをオーバーライドする必要があります。

于 2013-08-02T20:00:18.043 に答える