2
我一直致力於在每個頁面上顯示用戶信息的網站。目前我正在檢索用戶詳細信息(使用存儲在會話中的Id),然後將User對象傳遞給每個頁面的呈現方法。Playframework - 從多個頁面訪問同一對象的最簡單方法?
有沒有辦法從多個頁面檢索一個對象,而無需將其作爲渲染參數添加到每個方法?
或者這是唯一/最好的方式來做到這一點?
我一直致力於在每個頁面上顯示用戶信息的網站。目前我正在檢索用戶詳細信息(使用存儲在會話中的Id),然後將User對象傳遞給每個頁面的呈現方法。Playframework - 從多個頁面訪問同一對象的最簡單方法?
有沒有辦法從多個頁面檢索一個對象,而無需將其作爲渲染參數添加到每個方法?
或者這是唯一/最好的方式來做到這一點?
您可以添加一個@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瞭解更多詳情
太棒了!我曾看過rednerArgs,但無法解決如何在所有頁面上使用它。這正是我需要的。 – 2012-02-25 06:59:05