afx*_*ign 23 playframework playframework-2.0
我目前正在通过以下方式获取相对URL路由作为String:
String url = controllers.directory.routes.Directory.viewOrganisation( org.id ).url();
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想得到完整的绝对网址.我确信这很简单,我似乎无法找到它.
或者,如何在视图中获取当前域以添加到相对URL?
bie*_*ior 24
确实很简单,它也在堆栈上得到了解答
请关注此问题:如何从Play 2 Java上的路由反向生成绝对URL?
一般来说,你需要:
routes.MyController.myMethod().absoluteURL(request());
Run Code Online (Sandbox Code Playgroud)
小智 8
对于Scala程序员:在Play 2.2.x中,absoluteURL以这种方式重载:
def absoluteURL(secure: Boolean = false)(implicit request: RequestHeader): String
Run Code Online (Sandbox Code Playgroud)
所以,如果你只是写
routes.MyController.myMethod().absoluteURL(request)
Run Code Online (Sandbox Code Playgroud)
你会收到一个错误:
Overloaded method value [absoluteURL] cannot be applied to (play.api.mvc.Request[play.api.mvc.AnyContent])
Run Code Online (Sandbox Code Playgroud)
有两种选择.您要么将请求声明为隐式:
def myMethod() = Action { implicit request =>
...
}
Run Code Online (Sandbox Code Playgroud)
并完全摆脱参数(你可以这样做,因为另一个有默认值):
routes.MyController.myMethod().absoluteURL()
Run Code Online (Sandbox Code Playgroud)
或者您必须明确指定这两个参数.
我在这里写这个答案,因为问题是"如何获取绝对路由URL作为String In Play框架2",并且接受的答案仅适用于Java.Scala版本有它的细微差别.
| 归档时间: |
|
| 查看次数: |
15824 次 |
| 最近记录: |