<g:each>指定控制器和操作?</g:each>

时间:2012-11-23 20:26:11

标签: grails groovy

我正在尝试从我的grails项目中的控制器调用一个方法,我可以迭代并在列表中显示项目。

//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>

我可能从错误的角度看待这个问题,但我希望能够做的是从聚合来自多个不同来源的数据的页面进行多次这样的调用。这些来源很可能是调用服务的控制器方法。

有什么建议吗?

提前致谢

1 个答案:

答案 0 :(得分: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(),                 
            ...]
}