2012-01-30 5 views
1

ページがロードされるとバッキングBeanのメソッドを呼び出す方法を知りたい場合 このスケーラビリティーを考慮する ユーザーログインが成功すると、彼の詳細がウェルカムページに表示されます。 はないでしょうコンストラクタからメソッドを呼び出すDetailsControllerページのロード時にマネージドBeanメソッドを呼び出す

に)私はlogin.xhtmlを持っていると私はgetDetails(と呼ばれる方法があり、どちらもsessionScopeと

にある豆LoginControllerとDetailsControllerを、管理している をwelcome.xhtml言います私はgetDetailsにDBから読み込まれているので、私は

...ユーザーは、彼がリダイレクトsの後、彼は彼の詳細を見ることができるはずどこwelcome.xhtmlにリダイレクトされているときにそれを呼び出すにはどうすればよい

)(推奨方法であること

ありがとう:)

+1

を返されたコントローラでのSaveメソッドを作りますか – BalusC

答えて

5

イベントを確認してください。

<f:metadata> 
     <f:event type="preRenderView" listener="#{myBean.preRender}"/> 
</f:metadata> 

は、その後、あなたのBeanのprerenderメソッドを経由してあなたがスコープに必要なデータを取得する:あなたは、ビューがレンダリングされるときに、バッキングBeanメソッドを呼び出すpreRenderViewイベントを持つことができます。通常、この方法はデータベースからデータを読み取り、適切な範囲に設定する。スコープを表示します。あなたのバリューバインディングoutputTextまたはinputTextコンポーネントは、preRenderViewイベントで作成または変更したオブジェクトにバインドするだけです。

0

通常の方法では、このメソッドをいくつかの値式で呼び出すことができます。
たとえば、#{myBean.details.price}という表現があるとします。これはバッキングBeanのgetDetailsを呼び出します。

通常、複数の式で参照されている場合は、dbから一度だけ詳細を取得する必要があります。これは簡単にプライベートフィールドで行います。

@PostConstructを使用する方法もあります。これは、CDI(またはスプリング)を使用する場合にのみ機能します。これは、コンストラクタの後、他の使用の前にメソッドを呼び出します。このメソッドは、ページの表示時ではなく、Beanの構築時に呼び出されます。リクエストスコープのBeanについては、同じことです。セッションスコープの場合はそうではありません。

+0

いいえ私のマネージドBeanのメソッドを呼び出して、POJOの値を設定します。私のELは#{myBean.DetailsPOJO.price}のようになります。私はspringを使用していません。 – enthusiastic

+0

@learnerなぜこれをgetDetailsPOJO()で処理できませんでしたか? –

+0

私のアプリのPojosはゲッターとセッターしか持っていません。私はそれらにビジネスロジックを持ちたくありません。 – enthusiastic

-1

どのようにより推奨ゲッターでDBを呼び出している?文字列

public String Save() throws DaoException 
{ 
    put your operation code here 

    return "/template/template.xhtml&faces-redirect=true"; 
} 
関連する問題