Playframework 如何在Play framework 2中以字符串形式获取绝对路由url?
我目前通过以下途径获得一个字符串形式的相对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
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()