2009-07-07 23 views
0

我對Groovy和Grails比較陌生,在業餘時間嘗試使用它們。我有一個小測試Grails應用程序,我可以使用grails run-app正常運行,但是grails run-war導致錯誤。run-app和run-war之間的Grails行爲差異

grails-app/conf/BootStrip.init方法,我添加了一些屬性獲取到DefaultGrailsControllerClassDefaultGrailsApplication

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下試過了,得到了同樣的結果。我已驗證BootStrap.init方法正在調用中(通過println),但對metaClass所做的更改似乎未在run-war之下。

任何想法我失蹤?

回答

3

Grails的運行戰爭 - 運行的Grails應用程序的WAR在碼頭

Grails的運行應用程序 - 運行在碼頭Grails應用

的差異似乎是運行戰爭不支持重裝作爲運行應用程序。

不知道你錯過了什麼。

+1

我讀過`run-app`從Grails 1.3開始使用Tomcat的地方。 – 2017-01-22 18:02:52

相關問題