2008-10-28 6 views
3

Comment déposer un Groovlet dans une application Grails? Disons, par exemple, dans le web-app/groovlet.groovyGroovlet dans Grails apps

 
import java.util.Date 

if (session == null) { 
    session = request.getSession(true); 
} 

if (session.counter == null) { 
    session.counter = 1 
} 

println """ 
<html> 
    <head> 
     <title>Groovy Servlet</title> 
    </head> 
    <body> 
Hello, ${request.remoteHost}: Counter: ${session.counter}! Date: ${new Date()} 
<br> 
""" 

Répondre

6
  1. grails install-templates
  2. Modifier src/templates/web/web.xml d'inclure votre groovlet
  3. grails war
  4. deploy

Je l'ai fait pas personnellement ce pour incorporer un groovlet, mais c'est la façon de modifier documentée les Grails déployés web.xml

+0

Nice! Je ne le savais pas. Pensez-vous que l'utilisation de groovlet est considérée comme un hack par opposition à la façon MVC d'ajouter un contrôleur et une vue, ou pensez-vous que c'est très bien? – kolrie

+0

Si le groovlet fait déjà partie d'une application de production ou qu'il a été testé correctement, je l'inclue comme décrit ci-dessus. Cela dit, si le groovlet est trivial, ou peut facilement être porté sur un contrôleur Grails (avec des tests, bien sûr), alors le port vaut probablement la peine, juste pour maintenir la continuité. –

0

La façon dont je le comprends, groovlets sont utilisés lorsque vous avez un conteneur de servlets avec le support de scripts Groovy,

Je pense que dans Grails vous le feriez besoin de déplacer votre code de logique métier vers un controller et laisser la partie vue à un HTML ou un GSP file.

Quelque chose le long de ces lignes (méta-code à partir du haut de ma tête, non testé):

Grails-app/controllers/SampleController.groovy

class DateController { 
    def index = { 
     if (session == null) { 
      session = request.getSession(true); 
     } 

     if (session.counter == null) { 
      session.counter = 1 
     } 
    } 
} 

web-app/échantillon/index .gsp

<html> 
    <head> 
    <title>Groovy Servlet</title> 
    </head> 
    <body> 
Hello, ${request.remoteHost}: Counter: ${session.counter}! Date: ${new Date()} 
<br> 

Espérons que ça aide!