如何更改我的视图文件以获得适当的输出?

时间:2011-12-16 05:40:20

标签: grails groovy

我有一个像这样的控制器:

def mytask = {
        def user = User.findByLogin(params.id)
        def mywork = user.schedules.daySchedules
        [ mywork : mywork ]
    }

我正在尝试查找分配给特定user的所有任务。我有一个相应的视图文件:

<g:each in="${mywork}" var="tasks">
                <div id = "todayswork">
                        ${tasks.task}               
                    </div>
                    <div id ="Dates">
                        ${tasks.startTime}-
                        ${tasks.endTime}
                    </div>
                    <hr/>
            </g:each>

逻辑工作正常,我正在按照我的意愿获得输出。例如,如果我转到http://localhost:8080/scheduleTest/daySchedule/mytask/anto我的浏览器显示用户anto的所有任务。但渲染它时存在问题。

我的输出为:

enter image description here

但我需要输出类似这样的输出:

enter image description here

如何更改我的视图文件以获取适当的输出。

提前致谢。

1 个答案:

答案 0 :(得分:1)

很难从你的例子中看出来,但我的猜测是你需要循环遍历tasks项目,该项目似乎是列表中的列表。

这意味着改变这个:

<g:each in="${mywork}" var="tasks">

到这个

<g:each in="${mywork[0]}" var="tasks">
// or
<g:each in="${mywork.tasks}" var="tasks">

同样,我不确定问题出在哪里,但其中一个会解决问题。

您获得输出的原因是,如果未在该列表上定义属性,Groovy将自动在列表上执行属性扩展。例如:

use(org.codehaus.groovy.runtime.TimeCategory) {
    def d1 = 5.minutes.ago
    def d2 = 1.week.from.now
    assert [d1, d2].time == [d1.time, d2.time]
}

与写list*.property相同,并返回原始项目中包含每个property的新列表。