javascript - 在视图上显示通过模型传递的列表
问题描述
我已通过控制器将列表传递给视图。
代码:
model.put("ScheduleList", schedulelist);
return new ModelAndView("EmployeeScheduleResult","message","Welcome "+(String)req.getSession().getAttribute("uname"));
该列表包含以下内容:
public class ScheduleList {
Date date;
String status;
String color;
//with setters ,getters and constructor.
}
我想以这种方式打印列表:
.weekday{
background-color:blue;
}
.weekend{
background-color:grey;
}
<html>
<table>
<tr>
<th>MONDAY</th>
<th>TUESDAY</th>
<th>WEDNESDAY</th>
<th>THURSDAY</th>
<th>FRIDAY</th>
<th>SATURDAY</th>
<th>SUNDAY</th>
</tr>
<tr>
<td class="weekday">2018-09-10</td>
<td class="weekday">2018-09-11</td>
<td class="weekday">2018-09-12</td>
<td class="weekday">2018-09-13</td>
<td class="weekday">2018-09-14</td>
<td class="weekend">2018-09-15</td>
<td class="weekend">2018-09-16</td>
</tr>
</table>
</html>
scheduleList 将具有日期、状态和将显示的颜色。
我想过使用弹簧标签,例如
<c:forEach items="${ScheduleList}" var="temp">
<tr>
<td>${temp.date}</td>
</tr>
</c:forEach>
这只会导致列表仅显示在星期一列上。我将如何以上面列出的方式显示列表?
问题是我不知道如何在日期是工作日或周末时将 css 类动态添加到 td 以及如何从一周中的特定日期开始我的列表。例如,如果我的列表以星期一的日期 2018-09-10 开始,那么我的表格数据应该以星期一开始(如上面的 HTML 代码片段)。
谁能指导我如何解决这个问题?
编辑:
<c:forEach items="${ScheduleList}" var="temp">
<tr>
<td style="background-color: ${temp.color};">${temp.date}
</td>
</tr>
</c:forEach>
此代码会将我在列表中分配的颜色添加到元素,但以水平方式显示列表的问题,星期一日期在星期一等下仍未解决。
解决方案
我通过 if 和选择 jstl 标签解决了这个问题。
代码:
<table>
<tr>
<th>MONDAY</th>
<th>TUESDAY</th>
<th>WEDNESDAY</th>
<th>THURSDAY</th>
<th>FRIDAY</th>
<th>SATURDAY</th>
<th>SUNDAY</th>
</tr>
<tr>
<c:choose>
<c:when test="${startDay==0}">
<td></td><td></td><td></td><td></td><td></td><td></td>
</c:when>
<c:when test="${startDay==6}">
<td></td><td></td><td></td><td></td><td></td>
</c:when>
<c:when test="${startDay==5}">
<td></td><td></td><td></td><td></td>
</c:when>
<c:when test="${startDay==4}">
<td></td><td></td><td></td>
</c:when>
<c:when test="${startDay==3}">
<td></td><td></td>
</c:when>
<c:when test="${startDay==2}">
<td></td>
</c:when>
<c:when test="${startDay==1}">
</c:when>
</c:choose>
<c:forEach items="${ScheduleList}" var="temp">
<td style="background-color: ${temp.color};color:white;">${temp.date}</td>
<c:if test="${temp.dayOfWeek==0}">
</tr>
<tr>
</c:if>
</c:forEach>
</tr>
</table>
所以我开始一行并检查开始日期是否在一周内,即 0 代表星期日,1 代表星期一,依此类推,直到星期六是 6。
<td>
检查后,我根据星期几创建了连续的。这将导致我需要在表格中显示的空格。
之后,我开始打印日期,但如果给定日期是星期天,我也会检查 forEach,如果日期是星期天,那么我关闭前一行并打开一个新行。
我知道这是一个混乱的解决方案,但只能在给定的时间范围内想到这一点。如果其他人有另一个优雅的解决方案,我可以在不更改从控制器收到的列表或更改数据库的情况下使用,将不胜感激。
推荐阅读
- c - 如何从 .h 头文件中正确调用函数?
- oracle - Oracle 文件加载器从跳过的行中添加最后一个字符的记录
- c - C/Assembly 中多字节字符的 UTF8 编码
- python - 如何比较 Python 中的两个列表并计算所有匹配项?
- laravel - Laravel 5.5 Spatie 权限不会创建角色
- c++ - 如何将类实例声明和实例化为类属性
- android - 如何从特定层获取输出张量?
- swift - 为什么不能快速打印错误代码
- c# - 如何在 asp.net core api 中使 iformfile 可以为空
- kubernetes - 为什么部署rook-ceph后在kubernetes中找不到osd pod?