Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework 正在使用自定义处理程序覆盖OnRouterRequest!斯卡拉_Playframework_Playframework 2.2 - Fatal编程技术网

Playframework 正在使用自定义处理程序覆盖OnRouterRequest!斯卡拉

Playframework 正在使用自定义处理程序覆盖OnRouterRequest!斯卡拉,playframework,playframework-2.2,Playframework,Playframework 2.2,我正在使用Play 2.2.1并试图覆盖GlobalSettings中的OnRouterRequest函数。我在网上找到的所有示例都是在2.2.x版之前使用的,它们在2.2.x版中似乎不起作用。基本上,我们希望在响应头中为所有响应设置一些自定义内容 到目前为止,我已经尝试了以下基于 但是,这不起作用,因为没有与操作匹配的内容 非常感谢您事先提供的所有帮助 您需要匹配一个基本操作,而不是操作。下面的示例演示了如何在playframework 2.2中将每个请求的“pragma”头设置为“no ca

我正在使用Play 2.2.1并试图覆盖GlobalSettings中的OnRouterRequest函数。我在网上找到的所有示例都是在2.2.x版之前使用的,它们在2.2.x版中似乎不起作用。基本上,我们希望在响应头中为所有响应设置一些自定义内容

到目前为止,我已经尝试了以下基于

但是,这不起作用,因为没有与操作匹配的内容


非常感谢您事先提供的所有帮助

您需要匹配一个
基本操作
,而不是
操作
。下面的示例演示了如何在playframework 2.2中将每个请求的“pragma”头设置为“no cache”

import play.api_
导入play.api.mvc_
导入play.api.play.current
导入play.api.http.HeaderNames_
对象全局扩展全局设置{
def NoCache(操作:EssentialAction):EssentialAction=EssentialAction{request=>
action(request).map(u.withHeaders(PRAGMA->“无缓存”))
}
覆盖def OnRouterRequest(请求:RequestHeader):选项[Handler]={
如果(Play.isDev){
super.onroutereRequest(request).map{handler=>
处理程序匹配{
案例a:EssentialAction=>NoCache(a)
案例其他=>其他
}
}
}否则{
超级OnRouterRequest(请求)
}
}
}
代码是从您所指的问题移植而来的,该问题针对的是以前的playframework版本

从playframework 2.1开始,您还可以使用
doFilter
而不是
OnRouterRequest
来实现相同的功能:

override def doFilter(操作:EssentialAction)=EssentialAction{request=>
如果(Play.isDev){
操作(请求).map(u.WithHeader(
PRAGMA->“无缓存”
))
}否则{
行动(请求)
  }
}
object Global extends GlobalSettings {

  override def onRouteRequest(request: RequestHeader): Option[Handler] = {
    super.onRouteRequest(request).map { handler =>
      handler match {
        case a: Action[_] => CustomAction(a)
        case _            => handler
      }
    }
  }