2013-11-24 222 views
4

我的Grails控制器被通过以下网址GET请求URL

/center/madrid/12-de-octubre 
/center/madrid/12-de-octubre?opt=1 

调用我需要的控制器不同的行为,如果有之后的任何参数?在URL

我有以下URL映射:

name center: "/center/$_uni_city/$_uni_facility_name" { 
     controller = "site" 
     action = "centerprofile" 
} 

虽然我能找到的所有参数(例如_uni_city =马德里,选择= 1)我无法确定哪个参数来自查询字符串申请后URLMappings(即在上面的例子中选择)。

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

回答

4

要获得原始的参数在请求URL使用:的Grails request

request.queryString 
+0

谢谢。 这个属性甚至没有在Grails doc中提及,这是蹩脚的。 – Ser

+2

@很好,文档确实提到'request'是'HttpServletRequest'的一个实现,'getQueryString()'是'HttpServletRequest'的一部分。 http://docs.oracle.com/javaee/1.4/api/javax/servlet/http/HttpServletRequest.html –

4

见描述。

  • forwardURI - 有用的,因为 请求,获取所述当前请求URI对象requestURI属性返回原来的URL,而不是 匹配之一。

解决方案:

class URLController{ 
    def printCurrentUrl = { 
    render request.forwardURI 
    } 
} 
+0

这是否检索域? ...我的意思是...整个网址? – Rafael