Отображение списка на виде, который передается через модель - PullRequest
0 голосов
/ 10 сентября 2018

Я передал список представлению через мой контроллер.

Код:

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 к тд, когда дата является рабочим днем ​​или выходным, а также как запустить мой список с определенного дня недели. Например, если мой список начинается с даты 2018-09-10, которая является понедельником, то данные моей таблицы должны начинаться с понедельника (как фрагмент кода HTML выше).

Кто-нибудь может подсказать мне, как решить эту проблему?

EDIT:

            <c:forEach items="${ScheduleList}" var="temp">
            <tr>
                <td style="background-color: ${temp.color};">${temp.date} 
                </td>
            </tr>
            </c:forEach>

Этот код добавит элемент, который я назначил в списке, к элементу, но проблема показа списка по горизонтали с датами понедельника, наступающими в понедельник и т. Д., Все еще не решена.

1 Ответ

0 голосов
/ 11 сентября 2018

Я решил проблему с помощью 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>

The table data

Итак, я начинаю строку и проверяю, какая дата начала недели, т. Е. 0 - воскресенье, 1 - понедельник и т. Д. До субботы - 6.

После проверки я создал последовательный <td> в соответствии с днем ​​недели. Это приведет к пробелам, которые мне нужно было показать в таблице.

После этого я начинаю печатать даты, но также проверяю в forEach, является ли данная дата воскресеньем, если дата оказывается воскресением, тогда я закрываю предыдущую строку и открываю новую.

Я знаю, что это грязное решение, но я мог думать об этом только в данный период времени. Если у кого-то есть другое элегантное решение, которое я мог бы использовать, не меняя список, который я получаю от контроллера, или меняя БД, мы будем очень благодарны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...