【问题标题】:How to get absolute route url as String In Play framework 2?如何在 Play 框架 2 中获取绝对路由 url 作为字符串?
【发布时间】:2012-09-25 17:44:13
【问题描述】:

我目前正在通过以下方式获取相对 url 路由作为字符串:

String url = controllers.directory.routes.Directory.viewOrganisation( org.id ).url();

这很好,但是我想获得完整的绝对网址。我敢肯定这很简单,但我似乎找不到它。

或者,我如何在视图中获取当前域以添加到相对 url?

【问题讨论】:

    标签: playframework playframework-2.0


    【解决方案1】:

    确实很简单,堆栈上也有回答

    关注这个问题:How to reverse generate an absolute URL from a route on Play 2 Java?

    一般来说你需要:

    routes.MyController.myMethod().absoluteURL(request());
    

    【讨论】:

    • 谢谢Biesior。我确实搜索了堆栈但是......我的大脑一定有点疲惫!那成功了。感谢您抽出宝贵时间提出这么简单的问题!
    • 这就是 Stack Overflow 的用途 :) 别担心,下次你会找到的 :)
    【解决方案2】:

    对于 Scala 程序员:在 Play 2.2.x 中,absoluteURL 以这种方式重载:

    def absoluteURL(secure: Boolean = false)(implicit request: RequestHeader): String
    

    所以如果你只写

    routes.MyController.myMethod().absoluteURL(request)
    

    你会得到一个错误:

    Overloaded method value [absoluteURL] cannot be applied to (play.api.mvc.Request[play.api.mvc.AnyContent])
    

    有两种选择。您可以将请求声明为隐式:

    def myMethod() = Action { implicit request =>
        ...
    }
    

    并完全摆脱参数(你可以这样做,因为另一个有默认值):

    routes.MyController.myMethod().absoluteURL()
    

    或者您必须明确指定这两个参数。

    我在这里写这个答案,因为问题是“如何在 Play 框架 2 中获取绝对路由 url 作为字符串”,并且接受的答案仅适用于 Java。 Scala 版本有它的细微差别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多