2009-07-07 15 views
0

私はGroovyとGrailsに比較的新しく、余裕を持って試してみたいと思います。私はgrails run-appを使って細かく実行できる小さなテストGrailsアプリケーションを持っていますが、grails run-warはエラーになります。 grails-app/conf/BootStrip.init方法で実行アプリケーションと実行中のGrailsの動作の違い

、私は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の実行 - 戦争 - 桟橋

のRunののGrailsアプリケーションのWAR

Grailsの実行アプリ -

違いは、それが実行戦争はリロードをサポートしていませんように思わ桟橋でのGrailsアプリケーションを実行します。 run-appのように。

紛失しているものがわかりません。

+1

私は 'run-app'がGrails 1.3から始まるTomcatを使用しているところを読んでいます。 –