Playframework 如何在Play framework 2中以字符串形式获取绝对路由url?

Playframework 如何在Play framework 2中以字符串形式获取绝对路由url?,playframework,playframework-2.0,Playframework,Playframework 2.0,我目前通过以下途径获得一个字符串形式的相对url路由: String url = controllers.directory.routes.Directory.viewOrganisation( org.id ).url(); 这工作很好,但我想得到完整的绝对网址。我相信这很简单,我就是找不到 或者,如何获取视图中的当前域以添加到相对url?事实上,这很简单,而且在堆栈上也得到了响应 请回答这个问题: 一般来说,您需要: routes.MyController.myMethod().absol

我目前通过以下途径获得一个字符串形式的相对url路由:

String url = controllers.directory.routes.Directory.viewOrganisation( org.id ).url();
这工作很好,但我想得到完整的绝对网址。我相信这很简单,我就是找不到


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

事实上,这很简单,而且在堆栈上也得到了响应

请回答这个问题:

一般来说,您需要:

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

对于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 =>
    ...
}
并完全删除这些参数(您可以这样做,因为另一个参数有一个默认值):

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


我在这里写这个答案,因为问题是“如何在PlayFramework2中以字符串形式获取绝对路由url”,而公认的答案仅适用于Java。Scala版本有它的细微差别。

谢谢你,Biesior。我确实搜索了堆栈,但是。。。我的脑子一定有点累了!这就成功了。谢谢你花时间回答这么简单的问题!这就是堆栈溢出的原因:)别担心,下次您会找到它:)
routes.MyController.myMethod().absoluteURL()