相关疑难解决方法(0)

播放2 - 在所有回复中设置标题?

我知道在Play 2.0(scala)中设置HTTP标头?例如,您可以根据具体情况设置响应标头Ok("hello").withHeaders(PRAGMA -> "no-cache").

如果您想在所有操作的响应中设置标题或几个不同的标题,该怎么办?你不想在withHeaders任何地方重复.由于这更像是应用程序范围的配置,您可能不希望Action编写者必须使用不同的语法来获取标题(例如OkWithHeaders(...))

我现在拥有的是一个基本的Controller类,看起来像

class ContextController extends Controller {
 ...
 def Ok(h: Html) = Results.Ok(h).withHeaders(PRAGMA -> "no-cache")
}
Run Code Online (Sandbox Code Playgroud)

但这感觉不太对劲.感觉应该有更多的AOP风格的方法来定义默认标头并将它们添加到每个响应中.

scala playframework-2.0

18
推荐指数
2
解决办法
7210
查看次数

Play 2.3 Java - 在所有响应上设置标头

我将 Play 2.3.0 与 Java 8 一起使用,并希望在所有请求中设置一些标头。

我已经为 Scala 的类似问题找到了Stackoverflow-answers,但我没能把这个例子转换成 Java 世界:

import play.api._
import play.api.mvc._
import play.api.Play.current
import play.api.http.HeaderNames._

object Global extends GlobalSettings {

  def NoCache(action: EssentialAction): EssentialAction = EssentialAction { request =>
action(request).map(_.withHeaders(PRAGMA -> "no-cache"))
  }

  override def onRouteRequest(request: RequestHeader): Option[Handler] = {
if (Play.isDev) {
  super.onRouteRequest(request).map { handler =>
    handler match {
      case a: EssentialAction => NoCache(a)
      case other => other
    }
  }
} else {
  super.onRouteRequest(request)
}
  }
}
Run Code Online (Sandbox Code Playgroud)

我的尝试:

@Override
public Handler onRouteRequest(final …
Run Code Online (Sandbox Code Playgroud)

java playframework playframework-2.3

2
推荐指数
1
解决办法
2255
查看次数