假设我有一个班级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>
如果你能给我一个很好的联系,那也是一个很好的帮助。
答案 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。但是如果你想动态地添加学生和书籍,就我的理解而言,你必须使用我上面描述的方式。