2011-07-28 4 views
0

私は2つのコントローラを持っています。JSFページの読み込み中にメソッドを実行するように指示します。

FirstController

一つのDBにアクセスして、未読メッセージの数を確認するために、カウント(*)を行います。

SecondController

他には、メッセージを開き、それが開いたときに、それが未読であれば、それは読み取りとしてマークされます。私が直面しています


問題は、私はJSFページを開いたとき、それは最初にfirstcontrollerした後、第2 1を実行していることです。それで、未読のまま残っているメッセージの数を更新しません。

ページを開いているときにメソッドを実行する順序を設定することはできますか?

ページは左側のメニューのように表示され、未読のメッセージの数が表示され、中央にメッセージが表示されます。

私はそれをどのように行うことができますか?

答えて

1

「JSFが最初のコントローラを実行する方法」に関する詳細は正確にはありませんでした。これはpreRenderViewEventハンドラ、@PostConstuctメソッド、または何ですか?

問題の説明から、注文が既に正しいと思われますか?最初のコントローラが実行されたとし、このFirstControllerは未読メッセージをチェックします。したがって、メッセージは「リフレッシュ」されています。しかし、あなたはそれが未読のメッセージを更新しないと言っています。

単一のバッキングBeanによって単一のJSFビュー(ページ)がサポートされることをお勧めします。この単一のバッキングBeanは、さまざまなサービス(EJB Beanなど)への呼び出しを調整し、必要なすべてのデータを準備します。その後、このビューはそのバッキングBeanにバインドされ、そのデータをフェッチします。

この設定では、実行順序の問題がまったく実行されません。

+0

最初のコントローラは正常に動作しますが、2番目のコントローラの後に実行する必要があります。それが主な問題です。 最初のコントローラは "@RequestScoped"で、2番目のコントローラは "@ViewScoped"です。メソッドはすべて@PostConstructメソッドで実行されます。私は彼らがロードするときに実行すると信じています。しかし、私は可能な場合は切り替えたいと思います。 – pringlesinn

+0

同じコントローラにあっても同じ問題があります。 – pringlesinn

+1

すべてのメソッドが同じバッキングBeanに含まれていた場合に、同じ問題が発生すると思われるのはなぜですか? –

関連する問題