W jakich okolicznościach akta @SessionAttributes zostają wyczyszczone? Podczas próby użycia dwóch modeli na stronie odkryłem pewne niejasne zachowanie.Kiedy zostaną usunięte @SessionAttributes w SpringMVC? (Z próbką kodu)
Kiedy zrobić GET POST a następnie za pomocą tego kontrolera ...
@Controller
@RequestMapping("/myPage*")
@SessionAttributes(value = {"object1", "object2"})
public class MyController {
@RequestMapping(method = RequestMethod.GET)
public String get(Model model) {
model.addAttribute("object1", new Object1());
model.addAttribute("object2", new Object2());
return "myPage";
}
@RequestMapping(method = RequestMethod.POST)
public String post(@ModelAttribute(value = "object1") Object1 object1) {
//do something with object1
return "myPage";
}
}
... object2 zostanie usunięte z modelu. Nie istnieje już jako @ AkcjaAtrybut i nie można uzyskać do niej dostępu na mojej stronie widoku.
Jednak jeśli podpis drugiego sposobu jest modyfikowany do tego ...
public String post(@ModelAttribute(value = "object1") Object1 object1,
@ModelAttribute(value = "object2") Object2 object2) {
... potem object2 nie uzyskać usunięte z modelu i jest dostępny na mojej stronie widoku.
Javadoc dla @SessionAttributes mówi:
... atrybuty zostaną usunięte po handler wskazuje zakończenie jego konwersacji sesji.
Ale nie widzę, jak wskazałem zakończenie sesji konwersacji w pierwszym przykładzie, ale nie w drugim przykładzie.
Czy ktoś może wyjaśnić to zachowanie lub jest to błąd?
Ten problem został rozwiązany w Spring 3.0RC1. Zobacz http://jira.springsource.org/browse/SPR-6084 Dzięki Juergen! –