2013-02-20 2 views
2

사용자 정의 src/templates/scaffolding/Controller.groovy을 쓰려고하는데 컨트롤러 이름에 액세스 할 수있는 방법이 있는지 궁금합니다. 지금은 "모델"클래스 만 얻을 수있는 것처럼 보입니다. 내가 필요한 이유는 컨트롤러를 기반으로 템플릿 디렉토리 앞에 접두사를 렌더링하도록 사용자 정의하고 있기 때문입니다.Grails Custom Scaffolding이 컨트롤러 이름에 접근합니다.

예를 들어 AuthorAdminController 컨트롤러가 있고 /admin/user/** 디렉토리를 사용하려면 list을 사용자 정의해야합니다.

궁금한 점이 있으면 알려주세요. DefaultGrailsTemplateGenerator을 사용자 정의하는 방법을 살펴볼 준비가되었지만 올바른 경로인지 확실하지 않습니다.

예 :

class UserAdminController { 
     static scaffold = User 
} 

현재 내가 컨트롤러에 액세스 할 수 없습니다 내 Controller.groovy 내가 할 클래스 명 = '사용자'에 있도록.

답변

3

방식 비계 귀하의 템플릿을 항상 그런 다음 새로운 클래스 로더와로로드되는 DomainClassName 컨트롤러 (귀하의 예제에서, 즉 UserController)라는 이름의 클래스를 생성합니다 작동하기 때문에 나는, 당신이 할 수 있다고 생각하지 않습니다 실제 컨트롤러의 메타 클래스 (UserAdminController)는 생성 된 UserController의 인스턴스에 위임 한 새 작업을 추가합니다.

이제 모든 컨트롤러는 작업 실행 중에 controllerName 속성에 액세스 할 수 있으므로 해결 방법이 제공 될 수 있습니다. 나는 그것을 시도하지는 않았지만 log.info("controller: \${controllerName}")을 템플릿에 넣고 어떤 이름을 주는지 (백 슬래시가 생성 시간이 아닌 런타임시 해결되도록) 확인할 수 있습니다.

관련 문제