[英]Play 2.2.1 Java: Whats the equivalent of @before filters from play 1.X?
我想實現一個setUserIfPresent ()方法,該方法將用戶對象放入上下文中,如Http.Context.current()。args.put(“user”,user);
應在每個控制器方法之前應用此方法,以便視圖可以訪問用戶的隱式訪問權限。
使用Play1,我創建一個BaseController , 在所有請求(@Before filter) 之前 調用此方法,並從此擴展所有其他控制器。
如何使用Java API在play2中實現這樣的功能?
看起來像Scala有什么東西但是對於Java? http://www.playframework.com/documentation/2.2.x/ScalaHttpFilters
干杯
雖然你可以在“傳統的”webapp框架方式中使用過濾器( 或攔截器 ),但Play首選方式似乎絕對是組成自定義Action
方法; 請參閱有關Action Composition的文檔。
如果你遵循他們的風格,你將定義一個新的Action
實現,如下所示:
public class UserContextInjectingAction extends play.mvc.Action.Simple {
public F.Promise<SimpleResult> call(Http.Context ctx) throws Throwable {
Logger.info("Injecting user data into context " + ctx);
injectUser(ctx); // Written by you
return delegate.call(ctx);
}
}
而你最終得到的控制器代碼如下所示:
@With(UserContextInjectingAction.class)
public static Result showHomePage() {
return ok("Welcome");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.