Grails g:包含标记以包含控制器调用

时间:2011-03-20 18:05:05

标签: templates grails include partial

我问了这个问题here我有一个新的grails应用程序,索引页面由几个部分模板组成。我的每个部分模板需要从不同的控制器加载数据,建议的解决方案是使用标签 - 我已经尝试了这一点,但看不到任何事情发生,并且在搜索网络后,我无法找到任何完全正常运行的示例。< / p>

这是我的部分模板_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 个答案:

答案 0 :(得分: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" />

我得到了正确的回复。您视图中的其他所有内容是否都正确呈现,您确定包含include的页面实际上是在调用/呈现吗?

答案 1 :(得分:-1)

调用http://localhost:8080/myapp/home/showMessage时,您是否可以在控制台中看到日志消息?请先确认。 标签的使用是正确的,我多次使用它。

但是,建议不要使用此标记,因为您为每个请求执行了许多控制器调用。您可以使用而不是调用第二个控制器来渲染模板。