【发布时间】:2017-08-24 01:27:41
【问题描述】:
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"/>
// 同样,它在一周中的所有日子里一直到周日,operatingDays 的索引一直在增加,直到周末。
TruckDto 具有以下属性 ArrayList of Objects:
private List<TruckOperatingDays> operatingDays = new ArrayList<TruckOperatingDays>();
//getter setter below
TruckOperatingDays POJO 的 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 的索引位置在表单中是静态的,而从控制器传递的ArrayList 没有为表单中的输入字段/复选框设置值。
请注意,我不能使用 JSTL foreach 循环从 ArrayList 生成表单字段,因为我还需要显示星期一、星期二等标签。
有什么方法可以让我的表单字段通过我的 DTO 属性自动绑定,就像我们可以毫无问题地绑定简单的输入字段一样?
【问题讨论】:
标签: java jsp spring-mvc arraylist