Spring mvc形成一对多的形式

时间:2014-06-04 11:13:00

标签: java spring jsp spring-mvc spring-form

我有3个实体用户,部门和地址。用户可以拥有多个地址。现在我对构建此用例的表单存在疑问。

我可以直接访问Department,因为它是object.But我没有得到如何引用地址属性,因为它是一个Set。

class Users
{
  private int id;
  private String name;
  private Department dept;

  @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "userId", nullable = false)
    private Set<Address> addresses = new HashSet<Address>(0);

  //Getters and setters
}

MyForm.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
    <title>Spring 3 MVC Series - Contact Manager</title>
</head>
<body>
<h2>Contact Manager</h2>
<form:form method="post" commandName="userObject" action="addPerson.html">

    <table>
    <tr>
        <td><form:label path="name">Name</form:label></td>
        <td><form:input path="name" /></td> 
    </tr>
    <tr>
        <td><form:label path="userObject.dept.deptName">Department Name</form:label></td>
        <td><form:input path="userObject.dept.deptName" /></td>
    </tr>
    <tr>
        <td><form:label path="userObject.addresses.street">Street Address</form:label></td>
        <td><form:input path="userObject.addresses.street" /></td>
    </tr>

    <tr>
        <td colspan="2">
            <input type="submit" value="Add Contact"/>
        </td>
    </tr>
</table>  

</form:form>

如何使用object访问jsp表单中的address属性。我在jsp的userObject.addresses.street

中遇到问题

2 个答案:

答案 0 :(得分:2)

我会使用jstl taglib:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

然后使用foreach

并做一些像:

<c:forEach var="item" items="${userObject.addresses}">
  ${item.street}
</c:forEach>

答案 1 :(得分:1)

您无法访问List,因为它只是一个Object,因此您需要遍历User的{​​{1}}并显示街道或每个街道。

adresses