Play框架2.2:获取请求页面的URL

15

PLAY框架JAVA:

我正在尝试获取请求控制器函数的URL名称。例如, 我的路由为

GET /mypage controllers.Mypage.myfunction()

我有另一个页面也请求相同的控制器

GET /anotherpage controllers.Mypage.myfunction()

在控制器中是否有一种方法可以确定请求是来自/mypage还是/anotherpage?

谢谢

2个回答

27

假设你访问 example.com:9000/login?param=test,那么在你的控制器函数内:

public static Result login() {

    // set to "/login" -- The URI path without query parameters.
    String path = request().path(); 

    // set to "/login?param=test" -- The full URI.
    String uri = request().uri(); 

    // set to "example.com:9000" -- The host name from the request, with port (if specified by the client).
    String host = request().host(); 

    ...
}

有没有办法找出视图的URL?例如:如果用户登陆到www.abc.com/profile,然后点击我们的控制器API,我怎么获取着陆URL“www.abc.com/profile”的值? - HIRA THAKUR
@HIRATHAKUR 您可以使用 request().host() + request().uri() 来构建您想要的内容。"uri" 还包括任何查询参数。 - Gavin Baumanis

7

我正在使用JAVA... 你知道在Java Play框架中相同的语法吗? - Incpetor
@Inceptor361,你尝试过在Java中使用request.pathrequest.url吗? - Govind Singh
我将其作为 request.headers() 获取,然后检查字符串是否包含 mypageanotherpage - Incpetor
是的,那是一个解决办法。如果我在运行http://localhost: 9000/login,然后页面请求到来,我会得到localhost:9000/login,然后检查字符串是否包含login - Incpetor
@Inceptor361,它是有限制的,你必须已经知道URL。 - Govind Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接