如何在JSP页面上映射一对多关系并在提交页面时存储它们?

时间:2014-09-21 14:58:13

标签: java spring hibernate jsp

假设我有一个班级Student,另一个班级是BooksStudent类与Books有一对多的关系。

现在,我想从学生姓名,城市等用户那里获取数据,并在同一页面上添加书名,作者,价格等Books详细信息。用户可以添加多个Books详细信息(显然)。然后,我想提交页面,其中包含与父项一起填充的所有嵌套对象(书籍)数据。我怎么能这样做?

只要满足要求,您就可以采用任何其他示例而不是学生和书籍。

这是我的JSP文件:

// here student is a parent object and book is a child object having name,author etc details.

<body>
  ${company} form
  <form:form commandName="student" action="../homeController/getDetails"
      id="studentForm">
    Name: 
    <form:input path="name" id="name" />
    City:
    <form:input path="city" id="city" />
    <form:input path="books.bookName" id="bookname"/>
    <form:input path="books.bookAuthor" id="bookauthor"/>
    <button type="submit" name="submit" style="width: 50px; height: 20px;"
        value="Submit">Submit</button>
  </form:form>
</body>

如果你能给我一个很好的联系,那也是一个很好的帮助。

1 个答案:

答案 0 :(得分:1)

你必须为它写javascript但我会给你这样做的想法。

在你的JSP中有一个表单可以说name=StudentDataForm。在那种形式中你会做类似的事情 -

<form name="StudentDataForm" action="/submitStudentData.htm" method="post">
<div id="student1">
Name : <input type="text" id="studentname1" name="studentname" >
City : <input type="text" id="studentcity1" name="city" >
<div id="books>
Books : <input type="text" id="student1book1" name="bookstudent1" >
Books : <input type="text" id="student1book2" name="bookstudent1" >
</div>
</div>
<div id="student2">
Name : <input type="text" id="studentname2" name="studentname" >
City : <input type="text" id="studentcity2" name="city" >
<div id="books>
Books : <input type="text" id="student2book1" name="bookstudent2" >
Books : <input type="text" id="student2book2" name="bookstudent2" >
Books : <input type="text" id="student2book3" name="bookstudent2" >
Books : <input type="text" id="student2book4" name="bookstudent2" >
</div>
</div>
</>
</form>

概念是保持同一实体的name相同,例如学生的所有图书都有name = bookstudent2。然后在您的控制器或servlet上,您可以获取数据

String[] books = request.getParameterValues("bookstudent2");

通过您正在进行的操作获取command object,您只能在UI上显示它(通过使用正确的路径在命令对象中迭代学生或书籍)。但你无法做到这一点,这意味着你不能操纵UI上的数据并通过命令对象发送它。

  

如果不使用javascript,我该怎么做呢?如何在提交表单时将子对象的数据与父对象绑定?

如果您有固定数量的学生和固定数量的书籍,您可以按照自己的意愿行事。看看this link。但是如果你想动态地添加学生和书籍,就我的理解而言,你必须使用我上面描述的方式。