Я подготовил форму для работы с двумя моделями:
<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 имеют одинаковое значение?