Grails g: тег включения для вызова контроллера - PullRequest
2 голосов
/ 20 марта 2011

Я задал этот вопрос здесь У меня новое приложение 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 там есть) - но я никогда ничего не получаю.

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

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

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

class HomeController {

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

showMessage.gsp просто содержит $ {message}.И тогда в моем index.gsp

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

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

0 голосов
/ 21 марта 2011

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

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

...