2009-07-07 13 views
0

Je suis relativement nouveau à Groovy et Grails et je les essaie dans mon temps libre. J'ai un petit test Grails application que je suis capable de fonctionner correctement en utilisant grails run-app, mais grails run-war entraîne une erreur.Différence de comportement de Grails entre run-app et run-war

Dans la méthode grails-app/conf/BootStrip.init, j'ajoute des apporteurs de propriété sur le DefaultGrailsControllerClass et 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 } 
} 

Dans mon grails-app/views/layouts/main.gsp, j'utilise ceci:

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

Cela fonctionne bien sous run-app, mais en l'exécutant sous run-war, je reçois les éléments suivants:

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

J'ai essayé ceci sous Grails 1.1.1 et 1.2-M1 et obtenir le même résultat. J'ai vérifié que la méthode BootStrap.init est appelée (via un println), mais les modifications apportées au metaClass ne semblent pas prendre sous run-war.

Une idée de ce qui me manque?

Répondre

3

Grails gestion guerre - Run GUERRE une application Grails dans la jetée

Grails gestion app - exécutait une application Grails dans la jetée

La différence semble être que courir la guerre ne prend pas en charge rechargeant comme le fait l'application-run.

Vous ne savez pas ce qui vous manque.

+1

J'ai lu quelque part que 'run-app' utilise Tomcat à partir de Grails 1.3. –