我有一個控制器,這是越來越與用戶相關聯的對象的列表,並使用渲染方法將它傳遞給視圖,就像這樣: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