簡體   English   中英

播放2.2.1 Java:相當於播放1.X的@before過濾器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM