Тег Grails g:include для включения вызова контроллера

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

Вот мой частичный шаблон _newsFeed.gsp:

<div id="news_feed">
<g:include controller="news" action="latestsNews" /></div>

и мой контроллер NewsController.groovy:

class NewsController {

def latestsNews = {
    println "in controller"
    [news: "News Headline!"]
}

В приведенном выше примере я просто пытаюсь подтвердить, что контроллер вызывается (именно поэтому есть println), но я ничего не получаю.

Может ли кто-нибудь указать мне на рабочий пример или объяснить, если я что-то упустил?

Спасибо


person rhinds    schedule 20.03.2011    source источник
comment
не могли бы вы показать код страницы, на которой вы отображаете шаблон?   -  person Hoàng Long    schedule 21.03.2011


Ответы (2)


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

class HomeController {

   def showMessage = {
     println "Showing message"
     [message: 'this is a message']
   }
}

В showMessage.gsp просто есть ${message}. А потом в моем index.gsp

<g:include controller="home" action="showMessage" />

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

person Gregg    schedule 20.03.2011

При вызове http://localhost:8080/myapp/home/showMessage можно увидеть сообщения журнала в твоей консоли? Пожалуйста, убедитесь в этом в первую очередь. Использование тега правильное, и я использовал его много раз назад.

Однако использование этого тега не рекомендуется, поскольку вы выполняете много вызовов контроллера для каждого запроса. Вместо этого вы можете использовать для рендеринга шаблона без вызова второго контроллера.

person Houcem Berrayana    schedule 21.03.2011
comment
Есть определенные случаи, когда желательно использовать тег include, особенно для кэширования фрагментов страниц; Я использовал его широко без каких-либо проблем. - person Ken Liu; 04.10.2012