0

私は Groovy と Grails に比較的慣れていないので、空き時間にそれらを試しています。を使用して正常に実行できる小さなテスト Grails アプリケーションを持ってgrails run-appgrails run-warますが、エラーが発生します。

メソッドでは、grails-app/conf/BootStrip.initいくつかのプロパティ ゲッターをDefaultGrailsControllerClassandに追加していDefaultGrailsApplicationます。

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: そのようなプロパティはありません: クラスの menuControllerClasses: org.codehaus.groovy.grails.commons.DefaultGrailsApplication

Grails 1.1.1 および 1.2-M1 でこれを試しましたが、同じ結果が得られました。BootStrap.initメソッドが ( 経由で) 呼び出されていることを確認しましたprintlnが、 に加えられた変更metaClassrun-war.

私が見逃しているものはありますか?

4

1 に答える 1

3

grails run-war -- Jetty で Grails アプリケーションの WAR を実行する

grails run-app -- Jetty で Grails アプリケーションを実行します

違いは、run-war が run-app のようにリロードをサポートしていないことです。

何が欠けているのかわからない。

于 2009-08-28T10:27:20.307 に答える