首页 > 解决方案 > Spring MVC 发送带有复选框的对象

问题描述

我需要帮助将对象发送到我的列表,该对象是对象租金(列表)的一部分,其中包含我必须租用的所有副本,并且使用表格中的复选框选中了这些副本。但是,当我尝试这样做时,租金中的副本列表始终为空。我怎么解决这个问题?选择客户和日期非常有效,但无法获得列表。 JSP 视图

Jsp页面

            ...  
  <form:form action="${pageContext.request.contextPath}/rent/save" enctype="multipart/form-data" method="post" modelAttribute="rentObject">
                    <div>Select client:</div>
                 <form:select path="client.clientID">
                <div class="container-fluid">
                    <c:forEach
                        items="${clients}"
                        var="p"
                        varStatus="loop">

                        <form:option value="${p.clientID}">${p.name} ${p.surname},ID: ${p.clientID}</form:option>

                    </c:forEach>

                </form:select>
                        <div>Date from:</div>
                        <div><form:input type="date" id="dateFrom" path="dateFrom"/></div>
                    <div class="text-danger">
                        <form:errors path="dateFrom" cssClass="error" />
                    </div>

                    <div>Date to:</div>
                    <div><form:input type="date" id="dateTo" path="dateTo" /></div>
                    <div class="text-danger">
                        <form:errors path="dateTo" cssClass="error" />
                    </div>
                    <div><button id="save" class="btn btn-primary">Save</button> </div>
                    <p/>


                </div>

                <div class="col-sm-7 text-left"> 
                    <h2>Copies</h2>
                    <table id="tabela" class="table table-striped table-bordered table-sm" cellspacing="0" width="100%">
                        <thead>
                            <tr>
                                <th scope="col">Copy ID</th>
                                <th scope="col">Equipment name</th>
                                <th scope="col">Equipment picture</th>
                                <th scope="col">Defect</th>
                                <th scope="col">Rent</th>
                            </tr>
                        </thead>
                        <tbody>
                            <c:forEach items="${copiesAll}" var="m" varStatus="loop">
                                <tr>
                                    <td>${m.copyID}</td>
                                    <td>${m.equipment.name}</td>
                                     <td> 
                                         <a href="${pageContext.request.contextPath}/equipment/${m.equipment.equipmentID}/picture"  target="_blank">Show picture</a>
                                     </td>
                                    <td>${m.defect}</td>
                                    <td align="center">  
                                        <form:checkbox path="copies" value="${m}"/>  
                                        
                                    </td>
                                </tr>
                            </c:forEach>


                        </tbody>
                    </table>
                </div>
            </form:form> ```

租级

@Entity
@Table(name = "rent")
public class Rent implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "rentID")
    private int rentID;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dateFrom;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dateTo;

    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "clientid")
    private Client client;
    @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.PERSIST})
    @JoinColumn(name = "rentid", referencedColumnName = "rentID")
    private List<Copy> copies;

    @ManyToOne(cascade = CascadeType.MERGE)
    @JoinColumn(name = "userID", referencedColumnName = "username")
    private Worker worker;

    
    public Rent() {
        this.copies = new ArrayList<>();
    }
...

复制类

@Entity
@Table(name = "copy")
public class Copy implements Serializable {

  @ManyToOne(cascade = {CascadeType.DETACH,CascadeType.MERGE},fetch = FetchType.EAGER)
  @JoinColumn(name = "equipmentid")
  private Equipment equipment;
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "copyID")
  private Integer copyID;
  private boolean working;
  private boolean available;
  private String defect;
  private Integer rentid;

  public Copy() {
      working = true;
      available = true;
      defect = null;
      
  }
...

标签: springspring-mvcjsp

解决方案


推荐阅读