我使用Grails 2.2.0來站起來一個網站,我正在尋找最佳做法/建議讓我的代碼保持乾爽。這是我第一次使用Grails,我對Groovy和Grails都有一些熟悉,但我不是任何定義的專家。我來自Java + Spring背景。可以使用註釋來保持Groovy/Grails代碼的乾淨?
我有虛榮網址作爲要求。本質上,URI被用作查找所需模型的關鍵。如果找不到,請重定向到首頁。如果它確實存在,它將用於控制器動作的幫助器中(按照閉包的指示,只有當存在時才執行)。這是我的當前(工作)源的消毒例如:
UrlMappings.groovy:
"/$groupName/dashboard"(controller: "dashboard", action: "viewAll")
"/$groupName/dashboard/create"(controller: "dashboard", action: "createRecord")
"/$groupName/foo/$action?"(controller: "foo")
BaseController.groovy:
DashboardController.groovy延伸BaseController:
def viewAll() {
requireGroupFromUrl({ Group group -> gymHelper(group)})
}
def viewAllHelper(Group group) {
// some logic involving 'group'
def map = [groupInstance: group, /* OTHER CALCULATED/QUERIED PARAMS*/ ]
render(view: "/groupView", model: map)
}
這有效。然而,似乎很需要輔助方法。
從一眼看來,似乎過濾器可以做這項工作,但我需要指定哪些路徑將被排除在過濾器(/,/登錄,/註冊等),似乎保持它緊緊加上UrlMappings中的條目。或者我可以用多種模式以某種方式使用uri
?例如uri: '*/dashboard/**, */foo/**'
?我怎樣才能將檢索到的對象向前傳遞?
這個反而可以更好地實現一個註解,使用Around建議只註釋適用的控制器操作?如果是這樣,可以通過撥打電話redirect
?如何將檢索到的對象傳遞給註釋的控制器操作?即
@GroupRequired
def viewAll() {
...
}
昨晚我意識到,當開始使用過濾器進行試驗,該URI模式將是困難的,因爲'/ $ groupName'是在我的應用程序中有效的路徑。 – Mike