Java 重定向后如何保留模型属性?
我在视图“submit”中填写了一个对象 之后,它在视图“return”中发布对象“WelcomeMessageFinder” 我调用使用此对象的服务。如果服务失败,我想重定向到视图“submit”,并用前面的值填充表单 我的问题是,我找不到如何在重定向后保留“WelcomeMessageFinder”对象。它总是创建一个新的空对象 这是我的密码:Java 重定向后如何保留模型属性?,java,spring-mvc,Java,Spring Mvc,我在视图“submit”中填写了一个对象 之后,它在视图“return”中发布对象“WelcomeMessageFinder” 我调用使用此对象的服务。如果服务失败,我想重定向到视图“submit”,并用前面的值填充表单 我的问题是,我找不到如何在重定向后保留“WelcomeMessageFinder”对象。它总是创建一个新的空对象 这是我的密码: @Controller @SessionAttributes("welcomeMessageFinder") public class SandBo
@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对象
我发现这说明我不能将SessionAttributes与重定向一起使用,因为它不能保持会话。它说使用重定向属性,但属性似乎被重新初始化
编辑:
我终于发现了我的错误。这段代码有效,问题在于我的类WelcomeMessageFinder。要在flash会话中添加对象,此对象需要可序列化。我忘了在我的类中实现Serializable
添加此代码后,它工作正常。这是因为这段代码
"@ModelAttribute("welcomeMessageFinder")
public WelcomeMessageFinder welcomeMessageFinder() {
return new WelcomeMessageFinder();
}"
。它总是在调用任何requestmapping方法之前执行我最终发现了错误。这段代码有效,问题在于我的类WelcomeMessageFinder。要在flash会话中添加对象,此对象需要可序列化。我忘了在我的类中实现Serializable
添加此项后,它可以正常工作。我删除了它的可能副本,但它不会改变任何内容。