从 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")
在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")