Я хочу использовать сервис в своем приложении Grails. Однако это является всегда пустым. Я использую версию 1.1 Grails. Как я могу решить эту проблему?
Пример кода:
class A{
String name;
def testService;
static transients=['testService']
}
Я могу использовать сервис в доменном классе?
Это должно сработать. Обратите внимание: поскольку вы используете def, вам не нужно добавлять его в список переходных процессов. Вы пытаетесь получить к нему доступ статическим методом? Это поле экземпляра, поэтому вы можете получить к нему доступ только из экземпляров.
Типичный вариант внедрения службы в доменный класс - это проверка. Пользовательский валидатор передает проверяемый экземпляр класса домена, так что вы можете получить доступ к сервису из него:
static constraints = {
name validator: { value, obj ->
if (obj.testService.someMethod(value)) {
...
}
}
}
Короткий ответ. Да, вы можете использовать сервис внутри доменного класса.
Вот пример кода, в котором класс домена получает доступ к службе аутентификации из плагина acegi. Работает без проблем.
class Deal {
def authenticateService
def afterInsert() {
def user = authenticateService.userDomain();
....
}
....
}