저는 Groovy와 Grails에 비교적 익숙하며 여유 시간에 시도하고 있습니다. grails run-app
,하지만 grails run-war
결과를 사용하여 잘 실행할 수있는 작은 테스트 Grails 응용 프로그램에서 오류가 발생했습니다. grails-app/conf/BootStrip.init
방법에서Grails와 run-war 사이의 동작 차이
, 나는 DefaultGrailsControllerClass
및 DefaultGrailsApplication
에 몇 가지 속성의 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
이 아닌 것으로 확인되었습니다.
내가 무엇을 놓치고 있는지 알 수 있습니까?
나는'run-app'가 Grails 1.3에서 시작하는 Tomcat을 사용한다고 읽었습니다. –