Панорамированные компоненты в GSP - PullRequest
2 голосов
/ 30 декабря 2008

Похоже, что GSP Grails не имеет тега включения (поправьте меня, если я ошибаюсь). Самое близкое, что нужно «включить» - это использовать тег render . Существует также плагин include .

В моем случае, у меня есть классическая страница с панорамированием сверху слева, справа и снизу. Верхний заголовок или левая сторона будут включать навигацию. Середина будет содержанием. Правая сторона может содержать рекламу. В JSP-версии моего приложения каждая панель, кроме средней, будет иметь свою собственную JSP. Затем я бы включил (используя <jsp:include/>) различные панели на мою страницу. Это правильный подход в GSP?

Какова предпочтительная схема выполнения этого в GSP?

Ответы [ 3 ]

3 голосов
/ 30 декабря 2008

Вместо того, чтобы импортировать или отображать ваши панели для каждого вида, вы, вероятно, захотите использовать функциональность макета, предоставляемую Grails (с SiteMesh). Если вы хотите применить один и тот же макет ко всем вашим страницам (например, меню / контент / реклама), вы можете просто изменить grails-app/views/layouts/main.gsp, чтобы получить нужные элементы страницы, и тогда тег <g:layoutBody/> будет заполнен вашим обычным просмотры, сделанные вашими контроллерами. Макет main.gsp предоставляется по умолчанию и является макетом по умолчанию для всех (созданных и созданных) представлений.

Если вам нужно, чтобы на некоторых страницах были объявления, а на других - нет, вам нужно создать новый макет в grails-app/views/layouts (например, main-ads.gsp). Затем в представлениях, которые вы хотите разместить в объявлениях, в <head></head> вы установите макет, используя <meta name="layout" content="main-ads.gsp"/>.

http://docs.codehaus.org/display/GRAILS/Views+and+Layouts

1 голос
/ 20 июня 2009

Начиная с Grails 1.1, теперь есть <g:include> tag, который в значительной степени точно делает то, что вы хотите.

По-прежнему имеет смысл изучить приведенные выше варианты перекомпоновки / шаблонов, поскольку в большинстве случаев они будут более эффективными.

0 голосов
/ 30 декабря 2008

Вы правы в том, что тег render может выполнить то, что вы хотите. Попробуйте это с шаблонами, ключ состоит в том, чтобы назвать их с начальным подчеркиванием. Это сообщение в блоге должно быть полезным.

...