Почему у меня возникает ошибка 400 при использовании Spring/Thymeleaf, если у меня пустые поля?

Рейтинг: -2Ответов: 1Опубликовано: 25.08.2023

Поля класса Book:

private int id_book;
@NotEmpty
@Size(min = 2, max = 120, message = "Name should be between 2 and 120 chars")
private String name;
@NotEmpty
@Size(min = 2, max = 120, message = "Author should be between 2 and 120 chars")
private String author;
@Min(value=1700, message = "Age in diapason between 1700 and 2023") @Max(value=2023, message = "Age in diapason between 1700 and 2023")
private int year_book;
private Integer id_person;

Контроллер:

@GetMapping()
public String index(Model model){
    model.addAttribute("books", bookDAO.index());
    return "/books/index";
}

DAO:

public List index(){
    return jdbcTemplate.query("SELECT * FROM book", new BeanPropertyRowMapper<>(Book.class));
}

HTML/Thymeleaf код:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Book list</title>
</head>
<body>
<h1>Book list</h1>
<div th:each="book : ${books}">
  <a th:href="@{/books/{id}(id=${book.getId_book()})}" th:text="${book.getName()}">Name</a></div>
<br/>
<a th:href="@{/books/new}">Add new book</a>
</body>
</html>

Проблема: если в значении id_person хранится null, то я получаю ошибку 404.Ошибка

Я пытался поменять int на Integer, но это не дало результата.

Ответы

▲ 0

Забыл поставить Integer еще в сеттере:

public void setId_person(Integer id_person) {
    this.id_person = id_person;
}

Если кто то столкнется с подобной проблемой - будьте внимательны! int не может хранить null значение