如何在 Play! 的所有回复中设置 header框架 2.7 (Java)

How to set header in all responses in Play! framework 2.7 (Java)

在较旧的 Play 中!版本(如 2.3)可以修改所有响应的 header,如

public class WithMyPHeaderAction extends Action<WithMyPHeader> {

    @Override
    public CompletionStage<Result> call(Context ctx) {
        ctx.response().setHeader("any", "value");
        return delegate.call(ctx);
    }
}

如何使用 Play! 2.7 没有弃用(ctx.response() 自 2.7 起已弃用),在 Java 中?

您不需要执行此操作。在控制器中你可以:

return ok().withHeader("any", "value");

如果您必须在 Action 中执行相同的操作:

@Override
public CompletionStage<Result> call(Http.Request req) {
    return delegate.call(req).thenApply(r -> r.withHeader("any", "value"));
}

我正在使用 play.mvc.Action.Simple 进行操作。我也在 Play 2.8.1 上测试过这个,应该也适用于 Play 2.7。