我有一个对象,我在“提交”视图中填写表单 .
之后,它在视图“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说我可以't use SessionAttributes with redirect because it doesn't保持会话 . 它说使用RedirectAttributes,但属性似乎重新初始化 .
编辑:
我终于找到了我的错误 . 这段代码有效,问题出在我的类WelcomeMessageFinder上 . 要在Flash会话中添加对象,此对象必须是Serializable . 我忘了在我的 class 中实现Serializable .
添加后,它工作正常 .
2 回答
我终于找到了我的错误 . 这段代码有效,问题出在我的类WelcomeMessageFinder上 . 要在Flash会话中添加对象,此对象必须是Serializable . 我忘了在我的 class 中实现Serializable .
添加后,它工作正常 .
这是因为这段代码
. 它总是在调用任何requestmapping方法之前执行