我想实现一个setUserIfPresent()方法,该方法将用户对象放入Http.Context.current()。args.put(“ user”,user)等上下文中。
应该在每种控制器方法之前应用此方法,以便视图可以隐式访问用户。
使用Play1,我创建了一个BaseController,它在所有请求(@Before过滤器)之前调用此方法,并扩展了该请求中的所有其他控制器。
如何使用Java API在play2中实现类似的功能?
似乎对于Scala来说有些东西,但对于Java来说呢?http://www.playframework.com/documentation/2.2.x/ScalaHttpFilters
干杯
尽管您可以使用“传统” 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");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句