我在播放2.5中提取了ROUTE_PATTERN,其中包括:

request.tags.get("ROUTE_PATTERN")


现在我更新了play 2.6,此代码不再起作用。我在这里阅读播放文档:
What’s new in Play 2.6

我试过了:

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


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

最佳答案

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

10-06 11:26