从 jsp 页面 (Spring) 检索多个模型属性

Retrieving multiple model attributes from jsp page (Spring)

在ReservationController.java中我有以下方法,它从new-reservation.jsp

获取一个预订对象
@PostMapping("/addBookToReservation")
public String addBookToReservation(Model model,
                                  @Valid @ModelAttribute("reservation") Reservation reservation,
                                  BindingResult result,
                                  RedirectAttributes redirectAttributes) {
    
    if(result.hasErrors()) {
        return "reservation/new-reservation";
    }

    redirectAttributes.addFlashAttribute("reservation", reservation);
    
    return "redirect:/book/add-book";
}

并将其发送到 BookController.java,其中另一种方法将另一个属性添加到模型

@GetMapping("/book/add-book")
public String showAddBookForm(Model model) {

    model.addAttribute("book", new Book());
    Reservation reservation = (Reservation) model.getAttribute("reservation");
    System.out.println(reservation);       //prints the object I passed it!

    return "/book/add-book";
}

和returns下面加-book.jsp

<form:form action="/addBook" modelAttribute="book" method="post">                    
   <div>
        <div>
            <form:label path="title">Title</form:label>
            <form:input type="text" id="title" path="title" />
            <form:errors path="title" />
        </div>
        ...
    </div>
    <div>
        <input type="submit" value="Add book">
    </div>
</form:form>

现在,当我处理表单的操作 addBook

@PostMapping("/addBook")
public String addBook(@Valid @ModelAttribute Book book,
                        BindingResult result,
                        Model model) {
    
    if (result.hasErrors()) {
        return "book/add-book";
    }
    
    Reservation reservation = (Reservation) model.getAttribute("reservation");
    System.out.println(reservation); // reservation is null!!
    
    
    return "somewhere/else";
} 

我尝试从模型中检索预订对象,但结果为空。 如何通过我之前向您展示的 JSP 传递我的预订对象?

尝试在控制器顶部为模型属性添加@SessionAttributes,完成后remove the session attribute

@SessionAttributes("reservation")