2013-11-24 216 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