2

jsf/a4j で条件付きで評価される式の使用に少し問題があります

これが私のコードです

<a4j:form>
         <h:inputText id="id1" value="#{mybean.myvalue}" size="1"
                   required="#{not mybean.condition}"
                   rendered="#{not mybean.condition}"
                   requiredMessage="Put a number in here" />

           <h:selectBooleanCheckbox value="#{mybean.condition}">
                <a4j:support event="onclick" reRender="id1"/>
            </h:selectBooleanCheckbox>

<a4j:commandButton action="#{mybean.myaction}" value="Do something" />

 </a4j:form>

ブール値のチェックボックスは、条件付きで検証を有効/無効にします。

これは機能しません: a4j:commandButton は単に検証をスキップします。

ありがとう。

4

2 に答える 2

6

inputTextが検証に失敗した場合(プロセス検証フェーズ)、値mybean.conditionは更新されません (プロセス更新フェーズ)。テキスト フィールドは必須属性を使用するため、これは非常に可能性が高いです。

RichFaces ドキュメントからのライフサイクル:

代替テキスト
(ソース: jboss.org )

いずれかの JSF フェーズが失敗した場合、ライフサイクルは Render Response にスキップして、無効な入力での操作を回避します。h:messageおよびh:messagesタグを使用して、報告されたエラーを表示できます (ただし、AJAX を使用しているため、再レンダリングされるものにそれらを配置する必要があります。

aj4:supportタグにajaxSingle属性を設定すると、必要な動作が得られると思います。ドキュメントによると、これはコントロールの値のみを送信するため、テキスト フィールドはリクエスト値の適用/検証の処理/更新の処理フェーズには関与しません。

于 2009-05-25T13:00:11.643 に答える
0

mybean のスコープは何ですか? リクエストスコープの場合、ボタンをクリックするとその値がリセットされ、入力フィールドがまったく処理される可能性があります(レンダリングが「false」に解決される場合)。

于 2010-05-13T22:25:55.727 に答える