从 grails 控制器获取请求 URL

use*_*981 4 controller url-mapping querystringparameter

我的 grails 控制器由以下 URL 调用

/center/madrid/12-de-octubre
/center/madrid/12-de-octubre?opt=1
Run Code Online (Sandbox Code Playgroud)

如果 ? 之后有任何参数,我需要控制器表现不同。在网址中

我有以下 URL 映射:

   name center: "/center/$_uni_city/$_uni_facility_name" {
        controller = "site"
        action = "centerprofile"
} 
Run Code Online (Sandbox Code Playgroud)

虽然我可以找到所有参数(例如 _uni_city=Madrid、opt=1),但在应用 URLMappings(即上面示例中的 opt)后,我无法确定哪些参数来自查询字符串。


有没有办法在 grails 控制器中检索原始请求 URL(即/center/madrid/12-de-octubere?opt=1)?

use*_*981 5

要获取请求 URL 中的原始参数,请使用:

request.queryString 
Run Code Online (Sandbox Code Playgroud)

  • @Ser 好吧,文档确实提到“request”是“HttpServletRequest”的实现,“getQueryString()”是其中的一部分。http://docs.oracle.com/javaee/1.4/api/javax/servlet/http/HttpServletRequest.html (3认同)

Tom*_*máš 5

请参阅Grails 请求的描述。

  • forwardURI - 对于获取当前请求 URI 很有用,因为请求对象 requestURI 属性返回原始 URI,而不是匹配的 URI。

解决方案:

class URLController{
  def printCurrentUrl = {
   render request.forwardURI
  }
}
Run Code Online (Sandbox Code Playgroud)