2012-11-23 21 views
0

我試圖從我的grails項目中的控制器調用一個方法,我可以迭代並在列表中顯示項目。<g:each>指定控制器和操作?

//Controller code 
Class TicketController { 

static allowedMethods = [save: "POST", update: "POST", delete: "POST"] 

def ticketsByDate = { 
    return [tickets : Ticket.list(sort: 'dateCreated')] 
} 
... 

GSP code 

<div class="box-content"> 
     <ul class="tickets"> 
      <g:each var="ticket" in="${ticketsByDate}" controller="ticket"> 
       <li>${ticket.id}</li> 
      </g:each> 

我可能會從錯誤的角度來看待這個,但我希望能夠做的是從幾個不同來源聚合數據的頁面,多次調用這個樣子。這些來源很可能是調用服務的控制器方法。

有什麼建議嗎?

在此先感謝

回答

3

看一看的docs of the each tag。它用於迭代集合。 您必須將此集合從您的控制器傳遞到視圖。

爲了您的例子 - 把下面的代碼片段到你的ticketsByDate觀點:

<g:each var="ticket" in="${tickets}"> 
    <li>${ticket.id}</li> 
</g:each> 

如果你想遍歷你有你的控制器內彙總數據並傳遞給視圖的數據源不同的對象:

def ticketsByDate = { 
    return [tickets : Ticket.list(sort: 'dateCreated'), 
      moreTickets : AnotherThicket.list(), 
      users: User.list(),     
      ...] 
} 
+0

啊,我明白了。在返回地圖中包含我需要的所有內容。我錯誤地看着它 - 可以肯定地說,你不能在視圖服務器之外調用一個控制器嗎?感謝您幫助grails newby! – binarygiant

+0

如果您想使用默認的grails標籤,則必須將所有內容放入返回地圖中。或者,您可以通過在頁面渲染後獲取數據來使用'AJAX-way'... – aiolos

相關問題