获取Grails中当前页面的URL

kno*_*orv 23 grails

在Grails应用程序中,我想从页面A发送用户,然后发送到页面B上的表单,然后再返回页面A.

为了跟踪要返回的URL,我向页面B发送一个"returnPage"参数,其中包含要返回的页面的URL(页面A).

目前我正在使用页面A上的request.getRequestURL()来检索页面的URL.但是,我从getRequestURL()获取的URL与最终用户在其/她的地址栏中的URL不对应:

request.getRequestURL() == "http://localhost:8080/something/WEB-INF/grails-app/views/layouts/main.gsp"
URL in address bar == "http://localhost:8080/something/some/thing"
Run Code Online (Sandbox Code Playgroud)

如何获取"最终用户"URL?

kno*_*orv 53

答案是request.forwardURI(详情请点这里).

  • 链接现在已经破裂.请参阅http://grails.org/doc/latest/ref/Servlet%20API/request.html (2认同)

Pab*_*tti 8

我构建了这个方法来获取当前的url.

static String getCurrentUrl(HttpServletRequest request){

    StringBuilder sb = new StringBuilder()

    sb << request.getRequestURL().substring(0,request.getRequestURL().indexOf("/", 8))

    sb << request.getAttribute("javax.servlet.forward.request_uri")

    if(request.getAttribute("javax.servlet.forward.query_string")){

        sb << "?"

        sb << request.getAttribute("javax.servlet.forward.query_string")
    }

    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)