2012-04-17 28 views
5

Tôi có một lớp lệnh cần gọi dịch vụ.Grails: Tiêm dịch vụ vào đối tượng chỉ huy

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

class FilterVisitCommand { 

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

Định nghĩa dịch vụ loại này qua người giữ ứng dụng đang hoạt động sẽ bị loại bỏ. Có cách nào khác để cho dịch vụ được tiêm không? Chỉ "def accessRightsService" không hoạt động cho lớp lệnh.

+0

Tại sao ‘def accessRightsService' không hoạt động? – doelleri

Trả lời

0

Plugin Grails rich domain bật tính năng dịch vụ, xác thực, ... cho các lớp Groovy thông thường.

14

Nếu bạn đang tiêm dịch vụ vào đối tượng lệnh để xác thực, bạn có thể cần tham khảo dịch vụ thông qua đối tượng lệnh.

class FilterVisitCommand { 

    def accessRightsService 

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

Đây phải là nó, và chính xác là cách bạn làm điều đó trong 1.3.x. –

+0

Cảm ơn câu trả lời. Nhưng làm thế nào tôi có thể truy cập dịch vụ trong một phương thức được đặt trong lớp lệnh? – John

Các vấn đề liên quan