我有一個對象,我填寫表單「提交」的視圖。如何在重定向後保留模型屬性?
之後,它在視圖「return」中發佈對象「WelcomeMessageFinder」。
我使用該對象調用服務。如果服務失敗,我想重定向到「提交」視圖,並保持填充了以前值的表單。
我的問題是,我沒有找到如何保持重定向後的「WelcomeMessageFinder」對象。它總是創建一個新的空對象。
這裏是我的代碼:
@Controller
@SessionAttributes("welcomeMessageFinder")
public class SandBoxController extends PortalWebuiController {
@ModelAttribute("welcomeMessageFinder")
public WelcomeMessageFinder welcomeMessageFinder() {
return new WelcomeMessageFinder();
}
@RequestMapping(value = "/submit", method = RequestMethod.GET)
public String submit(WelcomeMessageFinder welcomeMessageFinder, Model model, SessionStatus sessionStatus, HttpSession httpSession) {
// On Init : a new WelcomeMessageFinder is created
// After redirect : I want to keep the filled WelcomeMessageFinder but a new one is created ...
model.addAttribute("zenithUserSession", zenithUserSession);
return "submitwelcomemessage";
}
@RequestMapping(value = "/return", method = RequestMethod.POST)
public String retun(
WelcomeMessageFinder welcomeMessageFinder,
Model model,
RedirectAttributes redirectAttributes,
SessionStatus sessionStatus, HttpSession httpSession) {
// welcomeMessageFinder contains the parameters I enter in the form.
redirectAttributes.addFlashAttribute("welcomeMessageFinder", welcomeMessageFinder);
return "redirect:/submit";
}
}
我能做些什麼來保持相同的WelcomeMessageFinder對象重定向之前和之後?
我覺得這個question,說我不能使用SessionAttributes重定向,因爲它不保留會話。它說使用RedirectAttributes但屬性似乎被重新初始化。
編輯:
我終於發現我的錯誤。此代碼有效,問題與我的課WelcomeMessageFinder。要在Flash會話中添加對象,該對象需要是可序列化的。我忘記在我的課程中實現Serializable。
添加後,它工作正常。
[如何將模型屬性從一個Spring MVC控制器傳遞到另一個控制器?](http://stackoverflow.com/questions/7429649/how-to-pass-model-attributes-from-one-spring -mvc-controller-to-another-controlle) – nobeh