如何从播放2.6 scala中的请求获取ROUTE_PATTERN

时间:2018-01-17 06:50:06

标签: scala playframework playframework-2.6

我已经在游戏2.5中使用:

提取了ROUTE_PATTERN
request.tags.get("ROUTE_PATTERN")

现在我更新了游戏2.6,这段代码不再适用了。我在这里阅读播放文档: What’s new in Play 2.6

我试过了:

object Attrs {
    val RoutePattern: TypedKey[String] = TypedKey("ROUTE_PATTERN")
  }
  request.attrs.get(Attrs.RoutePattern)

它总是返回None。如何在游戏2.6中获取请求的RoutePattern?

1 个答案:

答案 0 :(得分:5)

来自2.6 migration guide

  

如果您使用了Router.Tags.*个标记,则应更改代码以使用新的Router.Attrs.HandlerDef(Scala)....

     

此新属性包含HandlerDef对象,其中包含当前标记中的所有信息。当前标记都对应于HandlerDef对象中的字段....

HandlerDef中与旧ROUTE_PATTERN代码对应的字段为path

import play.api.routing.{ HandlerDef, Router }
import play.api.mvc.RequestHeader

val handler = request.attrs(Router.Attrs.HandlerDef)
val routePattern = handler.path