【问题标题】:How to show selected values sent from Controller as List of Objects?如何将从控制器发送的选定值显示为对象列表?
【发布时间】: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


    【解决方案1】:

    您仍然可以使用 JSTL ,只需添加一个额外的列表来存储工作日(注意:此示例假设您的 ArrayList 返回所有 7 天,但有些天可能为空(未选择))。

    <%
        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>
    

    如果您想避免使用 scriptlet,您可以在 JSP 页面中使用 来填充工作日列表,或者只在 Java 代码中(不在 JSP 中)填充日期列表

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 1970-01-01
      • 2021-12-26
      • 2020-09-25
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      相关资源
      最近更新 更多