17

以下使用例@SessionAttributesuserウィザードの終了後にセッション属性をクリアする方法は? /wizard0セッション属性に戻った後の私の例では、まだ存在しています。試してみましstatus.setComplete()session.removeAttribute("user")が、うまくいきません。

@Controller
@SessionAttributes("user")
public class UserWizard {

    @RequestMapping(value = "/wizard0", method = RequestMethod.GET)
    public String page1(Model model) {
        if(!model.containsAttribute("user")) {
            model.addAttribute("user", new User());
        }
        return "wizard/page1";
    }

    @RequestMapping(value = "/wizard1", method = RequestMethod.GET)
    public String page2(@ModelAttribute User user) {
        user.setFirstname(Utils.randomString());
        return "wizard/page2";
    }

    @RequestMapping(value = "/wizard2", method = RequestMethod.GET)
    public String page3(@ModelAttribute User user) {
        user.setLastname(Utils.randomString());
        return "wizard/page3";
    }

    @RequestMapping(value = "/finish", method = RequestMethod.GET)
    public String page4(@ModelAttribute User user, HttpSession session, SessionStatus status) {
        /**
         * store User ...
         */
        status.setComplete();
        session.removeAttribute("user");
        return "redirect:/home";
    }

}

編集

私の間違い。status.setComplete();うまくいきます。session.removeAttribute("user")ここでは何もしません。

4

2 に答える 2

0

以下は私のために働いた -

@RequestMapping(value = "/finish", method = RequestMethod.GET)
public String page4(HttpSession httpsession, SessionStatus status) {

/*Mark the current handler's session processing as complete, allowing for cleanup of 
  session attributes.*/
status.setComplete();

/* Invalidates this session then unbinds any objects boundto it. */
httpsession.invalidate();
return "redirect:/home";
}
于 2020-01-01T09:25:38.883 に答える