Grails 2.2.0을 사용하여 웹 사이트를 만들었으며 최상의 코드/조언을 찾고 있습니다. 이것은 Grails의 첫 번째 사용이며 Groovy와 Grails에 익숙하지만 어떤 정의로든 전문가는 아닙니다. Java + Spring 배경에서 왔습니다.주석을 사용하여 Groovy/Grails 코드가 DRY 상태를 유지할 수 있습니까?
나는 허영 URL을 요구 사항으로 가지고 있습니다. 본질적으로 URI는 필수 모델을 찾는 데 사용됩니다. 발견되지 않으면 홈페이지로 리디렉션하십시오. 그것이 존재하면 컨트롤러 액션의 도우미에서 사용됩니다 (클로저에 의해 지시 된대로, 현재있는 경우에만 실행 됨). BaseController
Group requireGroupFromUrl(Closure c) {
if (params.groupName == null) {
redirect(controller: "home", action: "index")
return
}
else {
Group group = Group.findByUrlName(params.groupName)
if (group == null) {
redirect(controller: "home", action: "index")
return
}
c.call(group)
}
}
DashboardController.groovy가 확장 :
UrlMappings.groovy :
"/$groupName/dashboard"(controller: "dashboard", action: "viewAll")
"/$groupName/dashboard/create"(controller: "dashboard", action: "createRecord")
"/$groupName/foo/$action?"(controller: "foo")
BaseController.groovy 여기 내 전류 (작업) 소스의 소독 예입니다
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)
}
이것은 작동합니다. 그러나 도우미 메서드가 필요없는 kludgy로 보인다.
한 눈에 보면 필터가 작업을 수행 할 수 있지만 필터 (/,/login,/register 등)에서 제외 할 경로를 지정해야합니다. UrlMappings의 항목과 결합됩니다. 아니면 여러 패턴과 함께 uri
을 사용할 수 있습니까? 예 : uri: '*/dashboard/**, */foo/**'
? 어떻게 검색된 객체를 전달할 수 있습니까?
적용 가능한 컨트롤러 동작 만 주석으로 처리하는 Around 조언을 사용하여 주석을 사용하면 더 나은 결과를 얻을 수 있습니까? 그렇다면, 애스펙트는 redirect
로 전화 할 수 있습니까? 검색된 객체를 주석 처리 된 컨트롤러 작업으로 어떻게 전달할 수 있습니까? 즉
@GroupRequired
def viewAll() {
...
}
나는'/ $ groupName'가 그대로 URI 패턴이 어려울 것으로, 필터를 실험하기 시작하면서, 지난 밤에 실현 내 응용 프로그램에서 유효한 경로. – Mike