Java 重定向后如何保留模型属性?

Java 重定向后如何保留模型属性?,java,spring-mvc,Java,Spring Mvc,我在视图“submit”中填写了一个对象 之后,它在视图“return”中发布对象“WelcomeMessageFinder” 我调用使用此对象的服务。如果服务失败,我想重定向到视图“submit”,并用前面的值填充表单 我的问题是,我找不到如何在重定向后保留“WelcomeMessageFinder”对象。它总是创建一个新的空对象 这是我的密码: @Controller @SessionAttributes("welcomeMessageFinder") public class SandBo

我在视图“submit”中填写了一个对象

之后,它在视图“return”中发布对象“WelcomeMessageFinder”

我调用使用此对象的服务。如果服务失败,我想重定向到视图“submit”,并用前面的值填充表单

我的问题是,我找不到如何在重定向后保留“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对象

我发现这说明我不能将SessionAttributes与重定向一起使用,因为它不能保持会话。它说使用重定向属性,但属性似乎被重新初始化

编辑:


我终于发现了我的错误。这段代码有效,问题在于我的类WelcomeMessageFinder。要在flash会话中添加对象,此对象需要可序列化。我忘了在我的类中实现Serializable


添加此代码后,它工作正常。

这是因为这段代码

 "@ModelAttribute("welcomeMessageFinder")
    public WelcomeMessageFinder welcomeMessageFinder() {
        return new WelcomeMessageFinder();
    }"

。它总是在调用任何requestmapping方法之前执行

我最终发现了错误。这段代码有效,问题在于我的类WelcomeMessageFinder。要在flash会话中添加对象,此对象需要可序列化。我忘了在我的类中实现Serializable


添加此项后,它可以正常工作。

我删除了它的可能副本,但它不会改变任何内容。