次のシナリオに共通のパターンがあるかどうか疑問に思っています。
1 つのリクエスト スコープ Bean でサポートされている 1 つの JSF ページがあるとします。ユーザーがこのページに入ったときに、データベース テーブルからすべてのデータ行を取得したいと考えています。同じ JSF ページには、クエリ基準を提供するためのフォームが含まれています。ユーザーがクエリ条件を指定してフォームを送信すると、結果も同じページに表示したいと考えています。
ページ エントリですべての行をフェッチするのに適した場所は @PostConstruct メソッドです。追加の (挿入された) 要求パラメーターは既にここで利用可能であり、クエリで使用できるため、これを行うのに適した場所です。ただし、フォームから送信されたパラメーターはまだ使用できません。これらはアクション メソッドでアクセスできます。
ユーザーがフォーム条件を使用してデータベース テーブルにクエリを実行すると、この場合、データベースは 2 回クエリされます。リクエスト スコープ Bean が再作成され、すべての行をフェッチする @PostConstruct メソッドが呼び出されてから、ユーザーが必要なものをフェッチするフォーム アクション メソッドが呼び出されます。
もちろん、アクション メソッドでのみ DB クエリを使用して、フォームの結果を別の Bean に基づく別の JSF ページにリダイレクトすることもできます。しかし、1 つの JSF ページと 1 つのマネージド Bean で必要なものだけを取得する方法はありますか?