2012-04-17 6 views
5

Tengo una clase de comando que necesita llamar a un servicio.Grails: Servicio de inyección en el objeto de comando

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

class FilterVisitCommand { 

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

Esta amable definición de servicio a través del titular de la aplicación funciona sin embargo está depracated. ¿Hay alguna otra forma de permitir que el servicio sea inyectado? Solo "def accessRightsService" no funciona para la clase de comando.

+0

¿Por qué no funciona 'def accessRightsService'? – doelleri

Respuesta

14

Si está inyectando un servicio en un objeto de comando para la validación, puede necesitar hacer referencia al servicio a través del objeto de comando.

class FilterVisitCommand { 

    def accessRightsService 

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

Esto debería ser, y es exactamente cómo lo haría en 1.3.x. –

+0

Gracias por la respuesta. Pero, ¿cómo puedo acceder al servicio en un método que se coloca en la clase de comando? – John

Cuestiones relacionadas