Καλησπέρα,
Προσπαθώ να φτιάξω μία εφαρμογή σε spring boot. Είναι η κλασική εφαρμογή library management, με βιβλία, συγγραφείς κλπ.
Δύο entities, Author και Book, έφτιαξα controllers, services, repositories κλπ. Ως τώρα έχω καταφέρει να μπορώ να αποθηκεύω authors.
Θέλω να κάνω το εξής:
Στον κλασικό πίνακα των authors, μπαίνουν buttons για edit, delete. Θέλω να βάλω ένα button "New book", ώστε με το πάτημα να εμφανίζεται ένα html όπου θα αποθηκεύεται το βιβλίο για τον συγκεκριμένο author.
Οι μέθοδοι στον controller:
@GetMapping("add-book-for-author/{id}")
public String addBookForAuthor(@PathVariable("id") Long id, Model model) {
Author author = authorService.getAuthorById(id);
Book book = new Book();
model.addAttribute("author", author);
model.addAttribute(("book"), book);
return "add-books"; //
}
@PostMapping("/authors/{id}/books")
public String addTest(Book book, @PathVariable("id") Long id) {
Author author = authorService.getAuthorById(id);
book.setAuthor(author);
bookService.saveBook(book);
return "redirect:authors"; // Redirect to the author details page
}
και η html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Add New Book</title>
</head>
<body>
<h2>Add New Book for Author: <span th:text="${author.lastName}"></span></h2>
<form th:action="@{/authors/{id}/books(id=${author.id})}" th:object="book" method="POST">
<div>
<label>Book title:</label>
<input type="text" field="*{title}" placeholder="Enter title" required />
</div>
<div>
<label>Book isbn</label>
<input type="text" field="*{isbn}" placeholder="Enter isbn" required />
</div>
<div>
<label>Book category</label>
<input type="text" field="*{category}" required />
</div>
<div>
<button type="submit">Add book</button>
</div>
</form>
</body>
</html>
Στο τέλος μου πετάει σφάλμα ότι είναι null ο τίτλος του βιβλίου, γιατί στο entity το έχω επισημάνει ως nullable = false.
Κάποια βοήθεια; Έστω και με λινκ.