2011-02-08 13 views
3

Weblogic 10.3.4、PrimeFaces、JQueryを使用した小さなJSF2.0アプリケーションを作成しました。主なWebアプリケーションをJSF2.0に変換しようとしています。これは現在、Weblogic 8.1、Java 1.4およびJSPを使用しています。私が現時点で持っている質問は、あるマネージドBeanから別のマネージドBeanにオブジェクトを渡すための最良の方法です。私たちのアプリは多くの画面で構成されていますが、一般的なパターンは参照が最初の画面に入力され、送信時にデータベースから検索され、値オブジェクトに値が設定されます(標準Java bean)。次に、画面2が返されます。画面2は、一般に、値オブジェクトの変数を編集可能にしたフォームです。JSF2.0マネージドBean間で値オブジェクトを渡す

現在、すべての必要なオブジェクトは、1番目の画面(カスタム作成のコントローラクラス内)のHTTPServletRequestオブジェクトに属性として保存され、その後の画面で取得されます。

これはまだそれを行う方法ですか、私が逃した新しい「JSF」の方法ですか?私はまた、これらのバリュー・オブジェクトをユーザー・セッションBeanに格納しておき、必要に応じてそこから取得することも考えました。私は値オブジェクトを含む地図がこの場合に行く最良の方法だろうと思いますか?

答えて

3

他のマネージドBeanにマネージドBeanを挿入するには、@ManagedPropertyを使用します。

あなたはセッションがこの

@ManagedBean 
@SessionScoped 
public class User { 
    // ... 
} 

のようにBeanをスコープと要求は迅速な応答のために、この

@ManagedBean 
@RequestScoped 
public class Profile { 

    @ManagedProperty(value="#{user}") // #{user} is the managed bean name 
    private User user; 

    @PostConstruct 
    public void init() { 
     // User is available here for the case you'd like to work with it 
     // directly after bean's construction. 
    } 

    public String save() { 
     // User is available here as well, during action methods. 
     userDAO.save(user); 
    } 

    // +getter +setter 

} 
+0

おかげのようなBeanをスコープましたと仮定すると。私は上記をうまく機能させることができました。 2ページ目にフォームを構築する必要があります。コンストラクタで保存されたVOのインスタンスを作成しようとしましたが、nullPointerを取得しました。私は@PostConstructメソッドを使用して、フォーム変数をインスタンス化して設定しました。私は@PostConstruct JSF2.0で許容されるアプローチだと思いますか? – andyfinch

+0

管理プロパティーは、Bean自体が構築される前にBeanセッターによって設定することは不可能です。ですから、 '@ PostConstruct'は構築後すぐに管理プロパティを扱う通常の方法です。 – BalusC

+0

上向きと上向きに私は行く:) – andyfinch