Groovy - 以特定方式从 g:each 输出对象
Groovy - outputs objects from a g:each in specific way
目前我正在将一组对象传递到 gsp 页面并像这样打印出来:
<g:each in="${shifts}">
${it.dayOfWeek} - <g:formatDate format="hh:mm a" date="${it.fromTime}" /> - <g:formatDate format="hh:mm a" date="${it.toTime}" />
</g:each>
输出如下所示:
Monday - 12:30 AM - 12:45 AM
Monday - 12:00 AM - 12:15 AM
Tuesday - 12:00 AM - 12:15 AM
Wednesday - 12:00 AM - 12:15 AM //etc
所以从上面的例子来看,在 shifts 中有两个对象,其中星期几是星期一。不管时间顺序如何,我怎样才能让对象在一周中的同一天打印出这样的东西(对于上面的例子):
Monday - 12:00 AM - 12:15 AM - 12:30 AM - 12:45 AM
Tuesday - 12:00 AM - 12:15 AM
Wednesday - 12:00 AM - 12:15 AM
编辑*
// Sumbitted Email
static deliverSubmittedToOwner(Schedule schedule) {
def shifts = schedule.shifts.sort { shift -> days.indexOf(shift.dayOfWeek) }
shifts = shifts.groupBy{shifts.dayOfWeek}
println shifts
sendMail(to: session.user.email, subject: 'Your Flex Schedule submitted!',
view:'/email/schedule_submitted_to_owner',schedule:schedule,shifts:shifts)
}
您可以在轮班时使用 groupBy
。这会将您的轮班日期列表变成日期列表的地图:shifts.groupBy{it.dayOfWeek}
。然后迭代地图和元素(键是星期几,值是天的列表)。
目前我正在将一组对象传递到 gsp 页面并像这样打印出来:
<g:each in="${shifts}">
${it.dayOfWeek} - <g:formatDate format="hh:mm a" date="${it.fromTime}" /> - <g:formatDate format="hh:mm a" date="${it.toTime}" />
</g:each>
输出如下所示:
Monday - 12:30 AM - 12:45 AM
Monday - 12:00 AM - 12:15 AM
Tuesday - 12:00 AM - 12:15 AM
Wednesday - 12:00 AM - 12:15 AM //etc
所以从上面的例子来看,在 shifts 中有两个对象,其中星期几是星期一。不管时间顺序如何,我怎样才能让对象在一周中的同一天打印出这样的东西(对于上面的例子):
Monday - 12:00 AM - 12:15 AM - 12:30 AM - 12:45 AM
Tuesday - 12:00 AM - 12:15 AM
Wednesday - 12:00 AM - 12:15 AM
编辑*
// Sumbitted Email
static deliverSubmittedToOwner(Schedule schedule) {
def shifts = schedule.shifts.sort { shift -> days.indexOf(shift.dayOfWeek) }
shifts = shifts.groupBy{shifts.dayOfWeek}
println shifts
sendMail(to: session.user.email, subject: 'Your Flex Schedule submitted!',
view:'/email/schedule_submitted_to_owner',schedule:schedule,shifts:shifts)
}
您可以在轮班时使用 groupBy
。这会将您的轮班日期列表变成日期列表的地图:shifts.groupBy{it.dayOfWeek}
。然后迭代地图和元素(键是星期几,值是天的列表)。