我有一个像这样的 Controller :
def mytask = {
def user = User.findByLogin(params.id)
def mywork = user.schedules.daySchedules
[ mywork : mywork ]
}
我在哪里寻找分配给特定
user
的所有任务。我有一个相应的 View 文件:<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
的所有任务。但是在渲染时存在问题。我得到的输出为:
但我需要类似以下的输出:
如何更改我的 View 文件以获得适当的输出。
提前致谢。
最佳答案
从您的示例很难看出来,但我的猜测是您需要遍历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
的新列表。
关于grails - 如何更改我的 View 文件以获得适当的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530260/