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