Чтобы добавить к словам hvgotcodes, связанным с вашим вопросом, единственный раз, когда вы хотите отобразить непосредственно на представление GSP, это когда это представление фактически является "статическим".
Под статическим я имею в виду, чтоон не полагается на базу данных или какие-либо реальные расчеты для визуализации представления.Он по-прежнему может быть динамичным, поскольку он использует библиотеки тегов для работы с общими элементами и такие вещи, как текст «Welcome user » вверху страниц.
Как только вы захотитедля работы с пользовательским вводом, поиска информации в базе данных, управления более сложными URL-адресами или включения вычислений вы должны использовать контроллер.
Конечная цель заключается в том, чтобы GSP содержали только визуальную информацию и информацию о компоновке.как случайный статический блок текста.Но вы всегда должны избегать смешивания какой-либо логики с GSP, потому что это загромождает код, и всегда приводит к головным болям обслуживания в дальнейшем.
Редактирование в отношении библиотек тегов:
Как я уже писал ниже:
Библиотеки тегов предназначены для любой логики, связанной с представлением, например, циклический переход по элементам или переключение видимости чего-либо.Всякий раз, когда у вас возникает желание поместить код непосредственно в ваш GSP, его, вероятно, следует поместить в библиотеку тегов.Конечно, для одноразовых исключений всегда есть исключения.
Итак, если в вашем представлении есть логический код, то конкретно относится к визуальному или макетному контенту, который должен бытьположить в библиотеку тегов.Хорошим примером является тег <sec:ifLoggedIn>
из Spring Security Core, который можно использовать для переключения видимости элемента, если пользователь вошел в систему. Это гораздо лучше, чем писать его вручную, например:
<sec:ifLoggedIn>blah blah</sec:ifLoggedIn>
<g:if test="${session.user?.loggedIn}">blah blah</g:if>
Потому что это делает цель более понятной (по названию), а также абстрагирует логику, поэтому, если вам позже потребуется изменить способ работы, вам нужно будет изменить его только в одном месте.
tl; dr:
- GSP - упрощенный «статический» контент
- Теги - многократно используемые динамические компоненты, специально предназначенные для визуального или макетного контента
- Контроллеры / GSP - динамический контент