2016-06-12 2 views
0

Я пытаюсь использовать сообщения из messages.properties и в соответствии с документацией i18n. требуется использовать message(code: "some.properties.label", args: ['var1', 'vars2']), но он не работает. Всегда получаю:Как использовать сообщение i18n в grails 3.1.7

Caused by: groovy.lang.MissingMethodException: No signature of method: com.project.MainService.message() is applicable for argument types: (java.util.LinkedHashMap)

С другой стороны, когда я использую messageSource.getMessage("code",null,null) это работает.

Очевидно, что мне нравится метод в документации, потому что он прямо к делу, но по какой-то причине не работает для меня. Похоже, что для людей в stackoverflow. Итак, гуру грааля, где это улов?

Благодаря

+0

где вы его используете? в службе? – injecteer

+0

Да, используя его в service.thanks –

ответ

1

Согласно StackTrace, кажется, что вы пытаетесь вызвать метод message(code:'whatever' ....) внутри службы. Вот почему он не работает, потому что он работает только на контроллерах и TagLibs (магия Грааля).

Вы должны взглянуть на this ответ, чтобы узнать больше объяснений.

Если вам действительно нужен синтаксис контроллера, вам просто нужно создать метод с теми же параметрами и вызвать службу MessageSource.

+0

Спасибо @Joch, похоже, мне просто нужно будет придерживаться autowiring messageSource, который сработал. –

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