Как назвать сервис Grails в представлении?

Знаток или Муравей? очень похожий вопрос этому, который должен помочь Вам ответить на свои вопросы.

, Кто такой Знаток? на официальном сайте.

редактирование: Для нового / проекта нового строительства, я рекомендовал бы использовать Знатока: "конвенция по конфигурации" сохранит Вас достойный блок времени в письменной форме и настраивающий сценарии развертывания и сборка. При использовании муравья сценарий сборки имеет тенденцию расти со временем в длине и сложности. Для существующих проектов это может быть твердо к рожку для обуви их конфигурация/расположение в систему Знатока.

6
задан cdeszaq 4 January 2013 в 00:30
поделиться

4 ответа

Services are not intended to be used inside views. You could create a TagLib where you can get a reference to the service via dependency injection.

19
ответ дан 8 December 2019 в 03:09
поделиться

Что ж, я нашел обходной путь со следующим кодом:

def helpersService = grailsApplication.classLoader.loadClass('HelpersService').newInstance()

Однако лучше использовать Service через внедрение зависимостей, поэтому я попробую совет Зигфрида.

1
ответ дан 8 December 2019 в 03:09
поделиться

Более простой метод, предполагающий, что ваше представление визуализируется Контроллер - просто передать ссылку на службу из действия в представление в модели, то есть:

class someController {
  def someService
  def someAction = {
    render(view: 'someView', model: ['someService': someService])
  }
}

Затем его можно использовать, как и следовало ожидать, в представлении. Очевидно, что для шаблона, отображаемого представлением, вам также необходимо передать ссылку на шаблон. Но для ясности: С. Пухбауэр прав; сервисы не должны использоваться в представлениях, и вы можете столкнуться с трудностями при диагностике проблем,

7
ответ дан 8 December 2019 в 03:09
поделиться

I found out, that this groovy inline code works:

<% def xxxService = application.getAttribute("org.codehaus.groovy.grails.APPLICATION_CONTEXT").getBean("xxxService") %>

You can call functions of the service just like this:

<g:select optionKey="key" from="${xxxService.getWhateverList()}" name="tarif" value="${accountInstance?.tarif}" ></g:select>
2
ответ дан 8 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

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