在 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";
}
并回傳以下 add-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("reservation")在 ReservationController.java 類定義之上添加并在完成后將其洗掉來解決我的問題(按照鏈接的答案中的說明進行操作)。
uj5u.com熱心網友回復:
嘗試為控制器頂部的模型屬性添加 @SessionAttributes 并在完成后洗掉會話屬性
@SessionAttributes("reservation")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/394720.html
上一篇:ngFor只點擊一項
