Используя g.render в сервисе чаш Грааля

InfoQ имеют бесплатную электронную книгу:

Доменный Управляемый Дизайн Быстро

Это - хорошее чтение с большим количеством примеров.

18
задан aasukisuki 22 November 2009 в 02:37
поделиться

2 ответа

Я полностью согласен с аргументацией Джона - использование GSP в сервисах обычно является плохим дизайнерским решением. Но нет правил без исключений! Если вы все же хотите это сделать, попробуйте следующий подход:

class MyService implements InitializingBean {
    boolean transactional = false
    def gspTagLibraryLookup  // being automatically injected by spring
    def g

    public void afterPropertiesSet() {
        g = gspTagLibraryLookup.lookupNamespaceDispatcher("g")
        assert g
    }

    def serviceMethod() {    
       // do anything with e.g. g.render
    }
}

Используя bean-компонент gspTagLibraryLookup, вы, конечно, можете получить доступ ко всем другим желаемым библиотекам тегов в службе.

27
ответ дан 30 November 2019 в 06:35
поделиться

Я бы посоветовал сделать это в контроллере. Сервис должен иметь многоразовую логику и не зависеть от шаблона представления, оставьте эту работу контроллеру. Используйте службу для получения данных, которые необходимо передать в шаблон, но оставьте работу по взаимодействию с шаблоном контроллеру.

4
ответ дан 30 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

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