2012-04-17 4 views
5

Ho una classe di comando che deve chiamare un servizio.Grails: Inject Service nell'oggetto Command

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH 

class FilterVisitCommand { 

    def accessRightsService = AH.application.mainContext.accessRightsService 
    def customerService = AH.application.mainContext.customerService 
... 
} 

Questa definizione di servizio gentile tramite il titolare dell'applicazione sta funzionando, tuttavia è depracata. C'è un altro modo per far sì che il servizio venga iniettato? Solo "def accessRightsService" non funziona per la classe di comando.

+0

Perché non "def accessRightsService' funziona? – doelleri

risposta

0

Il plug-in Grails rich domain consente l'iniezione di servizi, la convalida, ... per le classi regolari di Groovy.

14

Se si sta iniettando un servizio in un oggetto comando per la convalida, potrebbe essere necessario fare riferimento al servizio tramite l'oggetto comando.

class FilterVisitCommand { 

    def accessRightsService 

    static constraints = { 
     foo(validator: { foo, cmd -> 
      cmd.accessRightsService.bar() 
     }) 
    } 
} 
+0

Questo dovrebbe essere, ed è esattamente come lo faresti in 1.3.x. –

+0

Grazie per la risposta. Ma come posso accedere al servizio in un metodo che è collocato nella classe di comando? – John