如何在 Play 中的所有响应中设置标题!框架 2.7 (Java)

Posted

技术标签:

【中文标题】如何在 Play 中的所有响应中设置标题!框架 2.7 (Java)【英文标题】:How to set header in all responses in Play! framework 2.7 (Java) 【发布时间】:2020-04-11 15:38:02 【问题描述】:

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

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 中?

【问题讨论】:

【参考方案1】:

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

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

如果您必须在同一操作中执行此操作:

@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 上运行。

【讨论】:

我不想将 withHeader("any", "value") 添加到我的所有控制器结果中,但 Action 示例正是我想要的,谢谢!

以上是关于如何在 Play 中的所有响应中设置标题!框架 2.7 (Java)的主要内容,如果未能解决你的问题,请参考以下文章