Загрузить частичный шаблон Ajax — с помощью Grails

Я создаю веб-приложение Grails и имею основной индекс gsp, и есть несколько общих компонентов, которые будут общими для большинства страниц сайта, для которых я использую частичные шаблоны.

Каждый частичный шаблон будет достаточно изолирован и будет содержать очень разную информацию, поэтому каждый из них должен получать информацию от разных контроллеров.

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

Это возможно?

----РЕДАКТИРОВАТЬ-----

Кроме того, один из контроллеров частичных шаблонов будет извлекать информацию из веб-службы, что может занять некоторое время, поэтому было бы хорошо, если бы я также мог загружать эти шаблоны асинхронно.

Спасибо!


person rhinds    schedule 17.03.2011    source источник


Ответы (1)


Для этого предназначен тег ‹g:include›. Он очень полезен сам по себе, но еще больше в сочетании с плагином springcache и используя кэширование фрагментов страниц. Поскольку включение вызывает обычное действие в контроллере, вы также можете использовать его с помощью вызова ajax.

person Stefan Armbruster    schedule 17.03.2011
comment
Спасибо Стефан! это похоже на то, что мне нужно, однако я включил ‹g:include controller=web action=getNews /› в свои частичные шаблоны .GSP, и метод контроллера, похоже, не вызывается - есть ли что-то еще, что мне нужно? делать? - person rhinds; 18.03.2011
comment
Кроме того, есть ли шанс, что вы можете указать мне на пример ajax, используя тег include? Спасибо еще раз! - person rhinds; 18.03.2011
comment
Зависит от вашего варианта использования: если вы хотите вызвать действие, которое должно быть включено в какое-либо другое действие, также с помощью вызова ajax, вы должны использовать grails.org/doc/latest/ref/Tags/remoteFunction.html. Если результат вызова ajax должен включать какое-то другое действие, следует использовать g:include в gsp, сообщаемом вызовом ajax. - person Stefan Armbruster; 19.03.2011