2012-02-25 40 views
2

我一直致力於在每個頁面上顯示用戶信息的網站。目前我正在檢索用戶詳細信息(使用存儲在會話中的Id),然後將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 fitler。查看Play online documentation about controller interception瞭解更多詳情

+0

太棒了!我曾看過rednerArgs,但無法解決如何在所有頁面上使用它。這正是我需要的。 – 2012-02-25 06:59:05

相關問題