2012-02-25 4 views
2

私はすべてのページにユーザー情報を表示するサイトで作業しています。現在、私はユーザーの詳細を取得しています(セッションに格納されているIdを使用しています)。次に、各ページのrenderメソッドにUserオブジェクトを渡します。Playframework - 複数のページから同じオブジェクトにアクセスする最も簡単な方法は?

複数のページから各メソッドにレンダリング引数としてオブジェクトを追加せずにオブジェクトを取得する方法はありますか?

これを行うには、これが唯一の/最良の方法ですか?

答えて

5

あなたのコントローラに@Beforeメソッドを追加することができます。

public class UserController extends Controller { 
    @Before 
    public static void prepareUser() { 
     String id = session.get("userId"); 
     if (null == id) Secure.login(); 
     User user = User.findById(id); 
     if (null == user) Secure.login(); 
     renderArgs.put("user", user);  
    } 
} 

今すぐ他のすべてのアクションメソッドが自動的にrenderArgs内のユーザーオブジェクトを持つことになります。

あなたが他のコントローラクラスにこの機能を追加したい場合は、そのクラスにあなたが@Withを持っている必要があります。

@With(UserController.class) 
public class ProfileController extends Controller {...} 

また、いくつかのアクション・メソッドを除外するために@Before注釈のためのパラメータ「しない限り、」使用することができます@ Before Fittlerから。 Play online documentation about controller interceptionをチェックして詳細を確認してください

+0

驚くばかり!私はrednerArgsを見ていましたが、すべてのページでそれを使用する方法を理解できませんでした。これは私が必要とするものです。 –

関連する問題