一尘不染

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

jsp

假设我有一堂课Student,另一堂课是Books。与… Student有一对多关系的班级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>

如果您可以为我提供良好的链接,那也将是很大的帮助。


阅读 438

收藏
2020-06-10

共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上(通过使用正确的路径在命令对象中的Student或Books中进行迭代)。但是,您无法以其他方式做到这一点,这意味着您无法在UI上操作数据并无法通过命令Object发送数据。

不使用JavaScript怎么办?提交表单时如何将子对象的数据与父对象绑定?

如果您有固定数量的学生和固定数量的书,则可以做您想要的。看一下这个链接。但是,如果您想根据我的理解动态地添加“学生”和“书本”,则必须使用上述方法。

2020-06-10