Определите общедоступные setters
и getters
в вашем POJO
@Entity
public class Book{
@Id
private String id;
private String name;
private String author;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
private String price;
private int quantity;
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public Book() {
}
public Book(String id, String name, String author, String price, int quantity) {
super();
this.id = id;
this.name = name;
this.author = author;
this.price = price;
this.quantity = quantity;
}
}
books.html file
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{default}">
<head>
<title>Books</title>
</head>
<body>
<table>
<tr th:each="book: ${books}">
<h1>
<td th:text="${book.author}"></td>
</h1>
<td th:text="${book.name}"></td>
</tr>
</table>
</body>
</html>
Bookrepository
public interface Bookrepository extends JpaRepository<Book, String>{
}
BookService
public interface BookService {
public List<Book> getALlBooks();
public void addBook(Book book);
}
Реализация BookService
@Service
public class BookServiceImpl implements BookService {
@Autowired
Bookrepository bookrepository;
@Override
public List<Book> getALlBooks() {
return bookrepository.findAll();
}
@Override
public void addBook(Book book) {
bookrepository.save(book);
}
}
Ваш контроллер
@Controller("/")
public class BooksController{
@Autowired
BookService bookService;
@RequestMapping(value = "home/books", method = RequestMethod.GET)
public ModelAndView books() {
ModelAndView modelAndView = new ModelAndView();
Book book = new Book("id", "name1", "author1", "54", 5);
Book book2 = new Book("id 2", "name2", "author2", "54", 4);
bookService.addBook(book);
bookService.addBook(book2);
List<Book> AllBook = bookService.getALlBooks();
// Check here if list is empty and throw an exception
modelAndView.addObject("books", AllBook);
modelAndView.setViewName("books");
return modelAndView;
}
}
Объяснение
Ваша первая проблема вызвана тем, что вы не определили setters
и getter
. У вас были личные поля, и у вас не было доступа к ним за пределами вашего класса.
Ваша вторая проблема вызвана тем, что вы пропустили пустой список. Убедитесь, что проверили свои переменные перед их передачей. Простой logger
не сделает тебе ничего плохого. В большинстве случаев это очень удобно.