2012-02-17 12 views
1

JSFのajaxリスナーを含むselectOneMenu要素にバリデーターを挿入しようとすると、ajaxリスナーが機能しなくなります。Ajaxとバリデーターが連携していません

<h:selectOneMenu id="metalCodes" converter="metalCodeConverter" required="true" requiredMessage="#{lang.metalStockIntroducing_metalCode_req_txt}" value="#{metalStockIntroducingProcessesBean.metal.metalCode}"> 
     <f:selectItem itemLabel="Please select..." noSelectionOption="true" /> 
     <f:selectItems value="#{metalStockIntroducingProcessesBean.metalCodesMenu}" /> 
     <f:ajax listener="#{metalStockIntroducingProcessesBean.changeMetalType}" event="change" execute="metalCodes" render="metalTypesMenu" immediate="false"/> 
     <f:validator validatorId="densityValidator"/> 
</h:selectOneMenu> 

をあなたの友人は私がバリとAjaxリスナーは時間でcollaborately作品にするために行うことをお勧めしますどのような:selectOneMenu JSF要素を?次は私が話している私のJSF snipplet発行に固有のものですか

+0

バリデーターがバリデーター例外をスローしただけではないことは確かですか?ちなみに、あなたは "ajax4jsf"というタグを付けましたが、どこにでもa4jタグは表示されません。あなたは本当にAjax4jsf(RichFacesの一部)を使用していますか、使用していませんか?あなたが何であるかわからない場合は、タグの説明/情報を読んでください。 – BalusC

+0

親愛なるBalusC、そうです。私のJSFについての私の乏しい知識は、私が間違ったものを書くことを可能にしました。ページにタグが表示されたら、適切なものがA4Jである必要があります。しかし、私は間違っていて、それはAjaxでなければなりません。誤解を招くような情報を申し訳ありません。私はその間違いを繰り返さない。ところで、私は問題を解決するために何をすべきだと思いますか?ありがとうございました... –

+0

私はタグを編集し、A4Jタグを削除しました。 –

答えて

3

彼らは一緒にうまく動作するはずです。 ajaxリスナーメソッドは、バリデーターが例外をスローしたときにのみ呼び出されます。バリデータが間違っていないことを確認してください。入力コンポーネントに関連付けられている<h:message>または<h:messages>も再レンダリングしていることを確認し、ajaxリクエスト中に顔のメッセージが通知されるようにします。または、少なくともサーバーログを読み込むと、表示されているキューには表示されていないすべてのメッセージがログに記録されます。

+0

これで、selectOneMenuコンポーネントのバリデーター・ストラテジーを使用すると、警告の前に気づいていなかったすべての変更の動的な振る舞いのため、私にはあまり適していないことに気付きました。私は私の場合に属性戦略を使うべきです。しかし、私はバリデータークラスの属性値を取り出す際に別の問題が残っています。私は別の問題をこれで開きます。あなたの素晴らしいヘルプのためにBalusCに感謝します。 –

関連する問題