Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аналог <jsp:invoke fragment=""> в gsp 
:(
    Опции темы
4eJIoBekMoJIekyJIa
Дата 13.5.2011, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



Всем, привет. Хочу создать тег, который в качестве параметра будет принимать кусок кода.
В JSP2.0 я могу сделать так:
<p:foo>
      <jsp:attribute name="attr">
            blahblahblah
            <p:bar paramt='${param}'/>
      </jsp:attribute>
</p:foo>

и в реализации тега p:foo добавить

<jsp:invoke fragment="attr" />

Подскажите, есть чтолибо подобное в Grails GSP?
--------------------
PM MAIL   Вверх
emmanuil
Дата 24.5.2011, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



В gsp есть шаблоны. Например, через <g:render ... />, <g:include ... />
[url=http://grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.2.3 Views and Templates]См. тут.[/url]


Это сообщение отредактировал(а) emmanuil - 24.5.2011, 10:29
PM MAIL   Вверх
4eJIoBekMoJIekyJIa
Дата 24.5.2011, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



с помощью g:include того что я хочу добиться нельзя.

Похоже единственное решение это:
<g:set var="attr">
        blahblahblah
        <p:bar paramt='${param}'/>
</g:set>

<g:render template="foo" model="[attr: attr]"/>


_foo.gsp:

<p>in foo</p>
${attr}
<p>still inn foo</p>

Конечно не совсем то но все же
--------------------
PM MAIL   Вверх
emmanuil
Дата 24.5.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



Через include, если нужно передать модель, то просто через контроллер рендер делать.
Цитата(4eJIoBekMoJIekyJIa @  24.5.2011,  15:47 Найти цитируемый пост)
Конечно не совсем то но все же 

Так ты напиши, что нужно? Зачем тебе set? Запихивать в переменную разметку, по мне это плохое решение. Лучше доп. шаблон сделать.

PM MAIL   Вверх
4eJIoBekMoJIekyJIa
Дата 8.6.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



Цитата(emmanuil @  24.5.2011,  17:56 Найти цитируемый пост)
Через include, если нужно передать модель, то просто через контроллер рендер делать.


Не понимаю, поясни пожалуйста, как с помощью include я смогу передать разметку в созданный мной шаблон?


Цитата(emmanuil @  24.5.2011,  17:56 Найти цитируемый пост)
Так ты напиши, что нужно? 


Нужно создать шаблон foo в который я передам разметку как параметр и выведу ее.

Т.е если я на gsp странице вызову темплейт foo вот так:
Код

<g:foo>
    <my:param name="bar">
        <p>Hello World!</p>
    </my:param>
</g:foo>


и внутри моего шаблона foo я напишу

Код

Template said:
<my:invoke fragment="bar"/>



то в итоге получу страницу

Template said:
Hello World!



Это сообщение отредактировал(а) 4eJIoBekMoJIekyJIa - 8.6.2011, 17:50
--------------------
PM MAIL   Вверх
emmanuil
Дата 8.6.2011, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



Через include:
Код

<g:include controller="book" action="get" />

А в контролере делаешь render(template: 'path_to_template', model: [par1, par2])
То же самое можно сделать через тег <g:render />, просто в контролере можно реализовать логику по подготовке модели, например.

Цитата(4eJIoBekMoJIekyJIa @  8.6.2011,  15:49 Найти цитируемый пост)
Нужно создать шаблон foo в который я передам разметку как параметр и выведу ее.

Вот я и спрашиваю зачем передавать разметку через переменную?! Может я чего не до понял...
Этот участок кода сделать шаблоном:
Код

<my:param name="bar">
    <p>Hello World!</p>
</my:param>

и потом в коде
Код

Template said:
<g:render template="path" />

и получишь то же самое.

Добавлено через 2 минуты и 22 секунды
А, чуть не упустил. Можно передавать название шаблона в другой шаблон и рендерить, если заранее не известен шаблон.
PM MAIL   Вверх
4eJIoBekMoJIekyJIa
Дата 9.6.2011, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



Цитата(emmanuil @  8.6.2011,  18:56 Найти цитируемый пост)
Вот я и спрашиваю зачем передавать разметку через переменную?! Может я чего не до понял...


Например, я хочу сделать тег который выводит некую хитрую таблицу, эту таблицу я хочу использовать в разных местах, но немного видоизмененной, например добавлять после последнего столбца еще какието столбцы.

Т.е я пишу

Код

<my:table params=...>
  <my:param name='controlColumnsHeader'>
     <th>control1</th><th>control2</th>
  </my:param>
  <my:param name='controlColumnsContent'>
    <td><input name='control1' .../></td>
    <td><input name='control2' .../></td>
  </my:param>
</my:table>


И в реализации тега:

Код

<table>
<tr>
  <th>..</th>
  ...
  <my:invoke fragment="controlColumnsHeader"/>
</tr>
<tr>
  <td>...</td>
  ...
  <my:invoke fragment="controlColumnsContent"/>
</tr>
</table>


И соответственно то что я передал как controlColumnsHeader подставляется в хедер таблицы, аналогично controlColumnsContent подставляется в тело таблицы.

--------------------
PM MAIL   Вверх
emmanuil
Дата 12.6.2011, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



Теперь понятно.
Может так - http://grails.org/doc/latest/guide/6.%20Th...ayer.html#6.2.5 Sitemesh Content Blocks?

Добавлено через 5 минут и 59 секунд
Еще можно подумать над реализацией самого тега в grails и там контролировать, что и когда рендерить.
PM MAIL   Вверх
emmanuil
Дата 12.6.2011, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 9.1.2007

Репутация: нет
Всего: 3



Да. Блоки тут не подойдут наверное. Можно пошаманить над реализацией тега таблицы и там контролировать.
Еще можно попробовать реализовать на jsp и использовать в gsp - http://grails.org/doc/latest/guide/6.%20Th...ayer.html#6.3.6 Using JSP Tag Libraries.
Других вариантов не знаю.
Лучше, наверное, сделать свои шаблоны на каждый случай.
PM MAIL   Вверх
4eJIoBekMoJIekyJIa
Дата 17.6.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



ясн, спасибо за ответ.
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Groovy & Grails | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.