2011-08-19 13 views
1

JSFページに2つの依存ドロップダウンがあります。最初のドロップダウンでvalueChangeListenerを使用して、Listを2番目のドロップダウンに戻します。JSFの従属ドロップダウンが検証に失敗する

しかし、フォームを送信しようとすると、JSF検証に失敗します。テストから私は、問題は、ページが依存するドロップダウンリストが空の場合、最初のドロップダウンが選択された後にそれを設定します。しかし、ページがロードされたときに従属リストにある値はリストになく、検証に失敗しました。私は、ページが読み込まれたときにすべての可能な値でリストを設定するためにコンストラクタを使用してこれを確認しましたが、問題が解消されますが、これはすべての値を読み込むとページのパフォーマンスが低下する可能性があります。

どのように私はそれが働くことができる任意のアイデアですか?

よろしく、 ケビン。

答えて

2

ビュースコープ付きBeanの場合は、これはまさにユースケースです。このような場合に要求スコープBeanを使用することは、JSFの穀粒に逆らっています(可能かもしれませんが、辛い - ハリネズミを風呂敷のように使う)。

このような解決策に問題がある場合は、問題を緩和する方法があるはずです。要点は、ビュースコープを使用して、それに伴う問題を解決し、そこから逃げようとしないことです。

+0

はいこれが私の問題を解決しました。スコープをリクエストからビューに変更しました。私はJSFを使用するのが初めてです。私はまだViewのスコープが動作し、Requestスコープが失敗するのはなぜか分かりません。 – kevfuzz

+0

@kevfuzz:通常のJSFリクエストは2つのことを行います:まず、前のリクエストの後のようにWebインターフェースを再構築し、リクエストがもたらす変更を適用します(そうでなければ、valueChangeListenerは機能しません) 。リクエストスコープのBeanでは、最初のフェーズは失敗します。JSFは、オプションの中でもはや利用できなかった任意の値を指すドロップダウンを再構築しようとします。ビューのスコープ付きBeanは、同じページにいてPOSTを使用する限り存続し、値はそこにあります。ところで、コンストラクタで何もしないでください。 – fdreger

+0

情報ありがとうございます。 – kevfuzz

関連する問題