如何在 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)的主要内容,如果未能解决你的问题,请参考以下文章

在 Play framework 2.3 中设置 cookie sameSite

如果响应正文中的 id 具有依赖性,如何使用预请求脚本在邮递员中设置 2 个集合变量?

如何在实体框架中设置默认值

如何在 canplay 事件中设置 HTMLMediaElement 的 .currentTime,调用 play 并避免调度 pause 事件?

在 i18n Play 2.4 Scala 模板中设置隐式语言

如何在 RAML 中设置多个示例请求及其响应