Я изучаю весеннюю загрузку и получил задание сделать простое приложение CRUD. У меня есть страница «добавить книгу»:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Book adding</title>
</head>
<body>
<p style="text-align: center;">
Book adding</p>
<hr/>
<form id="add-book-form" th:action="@{/book/add}" th:method="post" action="main.html" th:object="${book}">
<p style="text-align: center;">
Title:</p>
<p style="text-align: center;">
<input name="title" type="text" th:field="*{title}"/></p>
<p style="text-align: center;">
Author:</p>
<p style="text-align: center;">
<label>
<select name="authors" size="1" th:field="${book.author.name}">
<option th:each="author : ${authors}" th:object="${author}" th:text="*{name}" th:value="*{name}">Unknown</option>
</select>
</label>
</p>
<p style="text-align: center;">
Genre:</p>
<p style="text-align: center;">
<input name="genre" type="text" th:field="*{genre.name}"/></p>
<p style="text-align: center;">
<input name="addBook" type="submit" value="Add"/></p>
</form>
</body>
</html>
и контроллер для этого:
@GetMapping("/add")
public String addBookPage(Model model) {
model.addAttribute("book", new Book());
model.addAttribute("authors", authorRepo.findAll());
return "addBook";
}
@PostMapping("/book/add")
public RedirectView addBook(@ModelAttribute Book book) {
bookRepo.save(book);
return new RedirectView("/");
}
Я хочу получить «id» и «name» для «автора» сущность из "опции". потому что теперь, когда я отправляю «/ book / add», он получает только «name», а «id» - ноль. например:
2020-05-29 12:32:17.572 DEBUG 39334 --- [nio-8080-exec-4] o.a.coyote.http11.Http11InputBuffer : Received [POST /book/add HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 116
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/add?
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: Idea-c5138e18=608ca753-86c5-4e20-9c25-d67a789d9df8
title=Google&author.name=Rowling&genre.name=LOL&addBook=Add]
, и из-за этого у меня в базе данных 2 Роулинг. Потому что нет обновления, но вставьте вместо него (я имею в виду «Автор»)
Кстати, почему я получаю параметр «addBook = Add» в моем запросе? и как его удалить?