2011-01-20 2 views
3

У меня есть служба, называемая Mailer, и контроллер, который должен использовать этот сервис:Grails с помощью автоматического связывания не работает

class DocumentController { 

    def mailer 

    def publish = { 
     mailer.sendReport() 
    } 

} 

Но когда я называю publish я получаю:

java.lang.NullPointerException: Cannot invoke method sendReport() on null object 

Почему здесь не работает инъекция зависимостей?

+0

Вы видите какие-либо проблемы с инициализацией вашей службы в журнале? Если компонент не может правильно инициализироваться, это типичный симптом. – Rhysyngsun

ответ

6

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

Из документации

«Служба содержит бизнес-логику, можно повторно использовать через приложение Grails. В Grails услуга является классом, который заканчивается в конвенции„Сервис“и живет в Grails-приложении/services. Служба может быть создана с помощью команды create-service: «

+0

Спасибо! Проблема заключалась в отсутствии «службы» в имени класса. – deamon

Смежные вопросы