尽管您 可以 使用“传统” webapp框架方式使用过滤器(或Interceptors),但Play首选方式似乎肯定是组成自定义Action
方法;请参阅有关动作组成的文档。
如果遵循其样式,则将定义一个新的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");
}