2010-07-13 93 views
3

好的,所以我問了一個問題,並且得到了一個關於如何使一個控制器實例不區分大小寫的答案。我可以做另一個grails urlmapping問題

"/mycontroller/$action?/$id?"(controller: "myController") 

所以,當一個應用程序外試圖在我們的應用程序引用鏈接,他們的小寫的url(:(嘆氣)會工作。

我需要擴展,以包括動作爲好。所以,問題是,按照上面的方法,我需要把一個URL映射在每個動作?

/mycontroller/methodone/(controller: "myController", action: methodOne) 
/mycontroller/methodtwo/(controller: "myController", action: methodTwo) 

喜歡的東西上面?

回答

0

您可以使用一個閉合來計算的動作(或其他參數)編程:

"/mycontroller/$a?/$id?" { 
    controller = 'myController' 
    action = { params.a?.toLowerCase() } 
} 
+0

難道不將此轉換被稱爲爲小寫的動作?在控制器上,動作是駱駝式的。因此,一個 /myController的/ myaction 需求轉換爲 /myController的/ myAction 工作 – hvgotcodes 2010-07-14 01:45:17

+0

你說得對,我看了你的問題錯了 - 我想你想從camel-去較低案件。換個角度來說,你需要獲得控制器的動作列表(參見http://stackoverflow.com/questions/2956294/reading-out-all-actions-in-a-grails-controller),然後建立一個小寫字母和駱駝名字的地圖。雖然,你可能想要映射「/ mycontroller/$ a?/ $ id?」,而不是將所有代碼放入url-mappings配置中。添加到MyController中的新操作中,並讓該操作運行較低級別的代碼並將請求轉發到駱駝式操作。 – 2010-07-19 17:35:57