Java 如何将从控制器发送的选定值显示为对象列表?

Java 如何将从控制器发送的选定值显示为对象列表?,java,jsp,spring-mvc,arraylist,Java,Jsp,Spring Mvc,Arraylist,AddTruck.jsp页面格式如下: <form:form method="post" modelAttribute="truckDto" action="myController"> <form:checkbox path="operatingDays[0].weekDays" value="MONDAY" class="weekday" id="weekday-mon"/> <form:checkbox path="o

AddTruck.jsp页面格式如下:

    <form:form method="post" modelAttribute="truckDto" action="myController">

       <form:checkbox path="operatingDays[0].weekDays" 
value="MONDAY" class="weekday" id="weekday-mon"/>

       <form:checkbox path="operatingDays[1].weekDays" 
value="TUESDAY" class="weekday" id="weekday-tue"/>
TruckOperatingDaysPOJO的getter setter方法具有以下属性:

@Enumerated(EnumType.STRING)
    @Column(name = "week_days")
    private WeekDaysEnum weekDays;

    @Column(name = "opening_hours")
    private String openingHours;

    @Column(name = "closing_hours")
    private String closingHours;
当我提交表单时,我会根据需要在我的控制器中获取值,并且我可以将这些值保存到我的数据库中,而不会出现任何问题。问题出现在“编辑”时间。 当我打开此页面编辑以前保存在数据库中的值时,我无法获取已选中的复选框,因为
operatingDays
的索引位置在表单中是静态的,并且从controller传递的
ArrayList
不会将值设置到表单中的输入字段/复选框中

请注意,我无法使用JSTL
foreach
循环从
ArrayList
生成表单字段,因为我也需要显示标签,如星期一、星期二等。


我的表单字段是否可以通过DTO项目自动绑定,就像我们可以毫无问题地绑定简单的输入字段一样?

您仍然可以使用JSTL,只需添加一个额外的列表来存储周天数即可(注意:本例假设ArrayList返回所有7天,但某些天可能为空(未选中))


//然后使用JSTL
如果希望避免使用Scriptlet,可以在JSP页面中使用来填充周天数列表,或者只在Java代码中填充天数列表(不在JSP中)

@Enumerated(EnumType.STRING)
    @Column(name = "week_days")
    private WeekDaysEnum weekDays;

    @Column(name = "opening_hours")
    private String openingHours;

    @Column(name = "closing_hours")
    private String closingHours;
<%
    String[] days = new String[]{ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" };
pageContext.setAttribute("wDays", days);
    %>
//and then use JSTL
<c:forEach items=${operatingDays} var="day", varStatus="counter">
   <form:checkbox path=${day.weekDays}
   value=${wDays[counter]} class="weekday" id="weekday-mon"/>
</c:forEach>