播放2.2.1 Java:相当于播放1.X的@beforefilter?
我想实现一个setUserIfPresent ()方法,它将用户对象放入上下文中,如Http.Context.current()。args.put(“user”,user);
应在每个控制器方法之前应用此方法,以便视图可以访问用户的隐式访问权限。
使用Play1,我创建一个BaseController , 在所有请求(@Before filter) 之前 调用此方法,并从此扩展所有其他控制器。
如何使用Java API在play2中实现这样的function?
似乎Scala有些东西,但对Java来说呢? http://www.playframework.com/documentation/2.2.x/ScalaHttpFilters
干杯
虽然你可以在“传统的”webapp框架方式中使用filter( 或拦截器 ),但Play首选方式似乎绝对是组成自定义Action
方法; 请参阅有关Action Composition的文档。
如果你遵循他们的风格,你将定义一个新的Action
实现,如下所示:
public class UserContextInjectingAction extends play.mvc.Action.Simple { public F.Promise 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"); }