我有一个控制器,这是越来越与用户相关联的对象的列表,并使用渲染方法将它传递给视图,就像这样:Grails的 - 视图中不识别模型
class HomeController {
def index() {
def postList = user.posts
postList.each{ it ->
println "Title: " + it.title
}
render(view: "/index", model: [returnPosts: postList])
}
在我鉴于我有以下代码:现在
<h2>Recent Posts:</h2>
<ul>
<g:each var="post" in="${returnPosts}">
<li><g:link controller="post" action="show" id="${post.id}">${post.title}</g:link></li>
</g:each>
</ul>
,在我的控制,我已经把在“调用println”语句,以确保该列表不为空,果然不是。但是,当我打开页面时,即使在控制器中,println语句显示它不是,但每个标记都不会运行一次,就好像“returnPosts”变量为空。
我一直在疯狂试图弄清楚这一点,任何人都可以看到为什么视图无法访问此变量的任何原因?
在GSP中尝试使用'<%System.out.println“returnPosts:”+ returnPosts%>“。直接写入控制台输出保存了我的生活几次...这是第一件要做的事情,看看returnPosts确实为null时进入视图 – Grooveek 2012-02-16 09:41:56
一切似乎都正确。也许你在某处犯了一个错字? – 2012-02-16 10:01:21
如果您使用的是小于2.0.0的Grails版本,则问题出在您的操作声明上。你有'def index(){'当你应该有'def index = {'。由于Grails不认为这是一个有效的动作,它会跳过控制器并直接渲染'.gsp'文件,并且模型从不会被填充。如果你使用Grails 2.0.0,那么问题就在别的地方。 – 2012-02-16 14:40:13