2012-04-17 17 views
5

Ich habe einen Befehl Klasse, die einen Dienst aufrufen muss.Grails: Inject-Service in das Command-Objekt

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

class FilterVisitCommand { 

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

Diese Art Service-Definition über Anwendung Halter ist jedoch arbeitet unerwün- schte. Gibt es eine andere Möglichkeit, den Service einzuspritzen? Nur "def accessRightsService" funktioniert nicht für die Befehlsklasse.

+0

Warum funktioniert 'def accessRightsService' nicht? – doelleri

Antwort

0

Das Grails rich domain Plugin ermöglicht Service-Injektion, Validierung, ... für die regelmäßige Groovy Klassen.

14

Wenn Sie einen Dienstes in ein Befehlsobjekt zur Validierung Injektion, müssen Sie den Dienst über das Befehlsobjekt verweisen.

class FilterVisitCommand { 

    def accessRightsService 

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

Dies sollte es sein, und genau so würden Sie es in 1.3.x tun. –

+0

Danke für die Antwort. Aber wie kann ich auf den Dienst in einer Methode zugreifen, die in der Befehlsklasse platziert ist? – John