2011-12-17 2 views
3

:사용의 GrailsApplication 주입 내부 UrlMappings I 오류의 거대한 목록을 몇 가지 이유를 들어

class UrlMappings { 
    static grailsApplication 
    static mappings = { 

    grailsApplication.controllerClasses.each { controllerClass -> // FAILS! 
     println(controllerClass.name) 
    } 

    "/$controller/$action?/$id?"{} 

    "/"(view:"/index") 
    "500"(view:'/error') 
} 

오류 : http://pastebin.com/tiEsENie


코드를 다음을 잘 모든 인쇄 작업으로

컨트롤러 이름 :

class UrlMappings { 
    static grailsApplication 
static mappings = { 

    "/$controller/$action?/$id?"{ 
     grailsApplication.controllerClasses.each { controllerClass -> // WORKS! 
      println(controllerClass.name) 
     } 
    } 

    "/"(view:"/index") 
    "500"(view:'/error') 
} 
} 

역에 액세스 할 수 없습니까? tic grailsApplication 내부에서 static mappings?

ApplicationHolder가 여전히 작동

+0

당신이 원하는 것을 근본적으로'$의 controller'를 사용하지 않는뿐만 아니라 2.0에서 작동하는 것을 발견? 컨트롤러에 루프를 만들어 매핑에서 인쇄해야하는 이유는 무엇입니까? – omarello

+0

또한 복제가 가능합니까? [http://stackoverflow.com/questions/4232884/dynamic-grails-url-mapping-config](http://stackoverflow.com/questions/4232884/dynamic-grails-url-mapping-config) – omarello

+1

내가 원하기 때문에 모든 ModeratorController를/mod/action으로 나눕니다. –

답변

2

동안, Grails의 워드 프로세서가 중단에 대한이 상태 (동적으로 urlmappings을 만들기 위해 컨트롤러 이름을 얻을 수 있어야합니다)


되지 코멘트 : 사용 종속성 주입 또는 GrailsApplicationAware에게 대신


grailsUrlMappingsHolderBean 이후 구현을 구현 GrailsApplicationAware, 나는 아래의 코드는

class UrlMappings { 
    static mappings = {   
     getGrailsApplication().controllerClasses.each{ controllerClass -> 
      if(controllerClass.name./*your logic here*/){ 
       "/mod/action" { 
        controller = "${controllerClass.name}" 
       } 
      } 
     } 
    } 
} 
+2

이것은 내 통합 테스트가 더 이상 작동하지 않는 문제를 제기합니다. 정적 환경에서 정적이지 않은 것을 호출한다는 사실 때문일 수 있습니까? –

+0

내 통합 테스트도 중단합니다. if (Environment.current! = Environment.TEST)로 래핑하여 해결했습니다. {..} – rlovtang

+0

해결해 주셔서 감사합니다. – fabiangebert

관련 문제