如何在Play框架2中获取绝对路径url作为String?

时间:2012-09-25 17:44:13

标签: playframework playframework-2.0

我目前正在通过以下方式获取相对网址路径:

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

这很好但是我想得到完整的绝对网址。我确信这很简单,我似乎无法找到它。

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

2 个答案:

答案 0 :(得分:22)

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

请按照以下问题:How to reverse generate an absolute URL from a route on Play 2 Java?

一般来说,你需要:

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

答案 1 :(得分:8)

对于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()

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

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