我已经准备好处理两个模型的表格:
<form action="rentBook2" method="post">
<table>
<tbody>
<tr>
<spring:bind path="book.id">
<input value="${book.id}" type="hidden" name="id"/><br />
</spring:bind>
<spring:bind path="client.id">
<input value="${client.id}" type="hidden" name="id"/><br />
</spring:bind>
<td><label>Rental Date:</label></td>
<td>
<spring:bind path="book.rentalDate">
<input type="text" name="rentalDate"/><br />
</spring:bind>
<tr>
<td><label>Return Date:</label></td>
<td>
<spring:bind path="book.returnDate">
<input type="text" name="returnDate"/><br />
</spring:bind>
</td>
<tr><td></td>
<td><input type="submit" value="Submit"/></td>
</tr>
</tbody>
</table>
</form>
为了更好的理解:book.id和client.id被隐藏,因为此值已经通过get方法传递,并且从上一表格中以url请求参数。
但是问题是:我能够从输入的书中接收book.id,book.rentalDate和book.returnDate。有线连接,client.id与book.id具有相同的值(这当然是不正确的)。
这是我的控制器方法:
@PostMapping("/rentBook2")
public String rentBook2(@ModelAttribute("book") Book theBook, @ModelAttribute("client") Client theClient) {
System.out.println("This is book in controller : " + theBook);
System.out.println("This is client in controller : " + theClient);
bookService.rentBook(theBook.getId(), theClient.getId());
bookService.saveBook(theBook);
return "redirect:/book/list-books";
}
以及println的示例输出:
This is book in controller : Book [id=19, title=null, author=null, genre=null, rentalDate=20-02-2019, returnDate=25-02-2019, client=null]
This is client in controller : Client [id=19, firstName=null, lastName=null, email=null]
您在上面看到的值“ 19”来自$ {book.id},但$ {client.id}的正确值应为“ 6”。
您知道为什么book.id和client.id具有相同的值吗?
答案 0 :(得分:0)
@M建议。 Deinum,问题出在唯一字段名称不足。我从id更改为idBook,从id更改为idClient,该机制按预期工作。
感谢@M。 Deinum!
答案 1 :(得分:0)
我的建议是将瞬态变量添加到您的任何类中,以便您可以通过一个模型属性(所需类的一个对象)处理每个值,然后对该对象执行所有逻辑。