有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何以Thymeleaf形式显示嵌套对象值

我想将Book和Author实体绑定到html表单(用户将为Book和authors插入数据,这些数据将通过html表单发送到mysql数据库)。我不知道如何装订这本书。作者。名字和书。作者。姓氏在我的百里香表中的值

这本书。java

@Entity
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private String isbn;

    @ManyToMany(cascade = CascadeType.ALL) // to save author's data when adding book to db
    @JsonIgnoreProperties("books")
    @JoinTable(name = "author_book", joinColumns = @JoinColumn(name = "book_id"),
            inverseJoinColumns = @JoinColumn(name = "author_id"))
    private Set<Author> authors = new HashSet<>();

作者。java

@Entity
public class Author {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String forename;
    private String surname;

    @ManyToMany(mappedBy = "authors", cascade = CascadeType.ALL) // look -> @ManyToMany in Book
    @JsonIgnoreProperties("authors")
    private Set<Book> books = new HashSet<>();

书籍控制器。java

(...)
@GetMapping("/book/add")
    public ModelAndView addGet() {
        ModelAndView m = new ModelAndView();
        m.addObject("book", new Book());
        m.setViewName("addBook");
        return m;
    }

    @PostMapping("/book/add")
    public ModelAndView addBook(Book book, BindingResult br) {
        ModelAndView m = new ModelAndView("redirect:/index");
        bookService.addBook(book);

        m.addObject("book", new Book());
        return m;
    }

addBook。html

<form th:action="@{/book/add}" th:object="${book}" th:method="post">

    <label for="author_name"> Author_Name </label>
    <input th:field="*{author}" id="author_name" type="text">

    <label for="author_surname"> Author_Surn </label>
    <input th:field="*{author}" id="author_surname" type="text">

    <label for="title"> Title </label>
    <input th:field="*{title}" id="title" type="text">

    <label for="isbn"> ISBN </label>
    <input th:field="*{isbn}" id="isbn" type="text">

    <button type="submit"> Add</button>
</form>

问题在于作者姓名和作者姓氏标签和输入


共 (1) 个答案

  1. # 1 楼答案

    您只能出于查看目的尝试此代码

    <span th:each="authors,iterStat : ${student.authors}">
             <span th:text="${authors.forename}"/><th:block th:if="${!iterStat.last}">,</th:block>
    </span> 
    

    根据你的代码,这是一个数据输入表单。但对于多对多关系来说,从同一时间插入具有作者姓名的图书表数据并不是一个好的决定

    您可以先保存书籍数据,然后再指定作者姓名

    如需更多帮助click this link