Пример использования @SessionAttributes
ниже. Как очистить атрибут сеанса user
после завершения работы мастера? В моем примере после возврата в /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")
здесь делать нечего.
status.setComplete();
должен очистить вашSessionAttribute
. Возможно, вы настраиваете пользователя в другом классе или это какая-то проблема с конфигурацией сеанса... - person Deividi Cavarzan   schedule 13.08.2013status.setComplete()
работает хорошо. У меня кнопка "Готово" отображается неправильно - методpage4
вообще не вызывался, так что это была проблема. Я увидел, чтоsession.removeAttribute("user") / HttpSession
не имеет ничего общего с@SessionAttributes
. Вопрос закрыть/удалить/и т.д... Извините еще раз. - person marioosh   schedule 14.08.2013