我有一个Play控制器,它有几个非常相似的方法。我想知道如何减少样板:
public static Result foo() {
// boilerplate
if (!PREVIEW) {
return redirect(routes.Application.login());
}
// other code
...
return ok("...");
}
public static Result bar() {
// boilerplate
if (!PREVIEW) {
return redirect(routes.Application.login());
}
// other code
...
return ok("...");
}
PREVIEW
是配置设置的简写。
答案 0 :(得分:1)
我创建了一个这样的动作:
public class PreviewAction extends Action.Simple {
public F.Promise<Result> call(Http.Context ctx) throws Throwable {
if (!PREVIEW) {
return F.Promise.pure(redirect(routes.Application.login()));
}
return delegate.call(ctx);
}
}
现在我可以在我的其他动作上使用注释,它的工作方式与以前一样:
@With(PreviewAction.class)
public static Result foo() {
...
}
更多信息:https://www.playframework.com/documentation/2.4.x/JavaAsync
感谢Tunaki指出我正确的方向。