Используя сервис чаш Грааля в доменном классе

Я хочу использовать сервис в своем приложении Grails. Однако это является всегда пустым. Я использую версию 1.1 Grails. Как я могу решить эту проблему?

Пример кода:

 class A{
      String name;
      def testService;
      static transients=['testService']
 }

Я могу использовать сервис в доменном классе?

16
задан cweston 11 June 2015 в 21:00
поделиться

2 ответа

Это должно сработать. Обратите внимание: поскольку вы используете def, вам не нужно добавлять его в список переходных процессов. Вы пытаетесь получить к нему доступ статическим методом? Это поле экземпляра, поэтому вы можете получить к нему доступ только из экземпляров.

Типичный вариант внедрения службы в доменный класс - это проверка. Пользовательский валидатор передает проверяемый экземпляр класса домена, так что вы можете получить доступ к сервису из него:

static constraints = {
   name validator: { value, obj ->
      if (obj.testService.someMethod(value)) {
         ...
      }
   }
}
25
ответ дан 30 November 2019 в 16:41
поделиться

Короткий ответ. Да, вы можете использовать сервис внутри доменного класса.

Вот пример кода, в котором класс домена получает доступ к службе аутентификации из плагина acegi. Работает без проблем.

class Deal {
    def authenticateService

    def afterInsert() {
        def user = authenticateService.userDomain();
        ....
    }
....
}
11
ответ дан 30 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: