2009-07-07 3 views
0

저는 Groovy와 Grails에 비교적 익숙하며 여유 시간에 시도하고 있습니다. grails run-app,하지만 grails run-war 결과를 사용하여 잘 실행할 수있는 작은 테스트 Grails 응용 프로그램에서 오류가 발생했습니다. grails-app/conf/BootStrip.init 방법에서Grails와 run-war 사이의 동작 차이

, 나는 DefaultGrailsControllerClassDefaultGrailsApplication에 몇 가지 속성의 getter를 추가 해요 :

DefaultGrailsControllerClass.metaClass.getMenuText = { -> 
    getPropertyOrStaticPropertyOrFieldValue('menuText', String.class) 
} 
DefaultGrailsControllerClass.metaClass.getMenuOrder = { -> 
    getPropertyOrStaticPropertyOrFieldValue('menuOrder', Integer.class) 
} 
DefaultGrailsApplication.metaClass.getMenuControllerClasses = { -> 
    controllerClasses.findAll { it.menuText != null }.sort { it.menuOrder } 
} 

을 내 grails-app/views/layouts/main.gsp, 나는이 사용하고 있습니다

<g:each var="c" in="${ grailsApplication.menuControllerClasses }"> 
    <li><g:link controller="${c.logicalPropertyName}">${c.menuText}</g:link></li> 
</g:each> 

이에서 잘 작동 run-app이지만 run-war에서 실행하면 다음과 같이 표시됩니다.

 
groovy.lang.MissingPropertyException: No such property: menuControllerClasses for class: org.codehaus.groovy.grails.commons.DefaultGrailsApplication 

나는 이것을 Grails 1.1.1과 1.2-M1에서 시도해 보았고 동일한 결과를 얻었다. 메서드가 (println을 통해) 호출되고 있지만 metaClass의 변경 내용이 run-war이 아닌 것으로 확인되었습니다.

내가 무엇을 놓치고 있는지 알 수 있습니까?

답변

3

Grails를 실행 전쟁 - 부두

에서 실행의 Grails 애플리케이션의 WAR

Grails를 실행 - 응용 프로그램 -

의 차이는 그 실행 - 전쟁은 다시로드 지원하지 않는 것 같다 부두에서 Grails 애플리케이션을 실행 run-app처럼.

누락 된 항목이 확실하지 않습니다.

+1

나는'run-app'가 Grails 1.3에서 시작하는 Tomcat을 사용한다고 읽었습니다. –