In quali circostanze esatte @SessionAttributes viene cancellato? Ho scoperto alcuni comportamenti confusi quando provo a utilizzare due modelli in una pagina.Quando vengono rimossi @SessionAttributes in SpringMVC? (Con esempio di codice)
Quando faccio un GET seguito da un POST utilizzando questo controller ...
@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";
}
}
... oggetto2 ottiene cancellati dal modello. Non esiste più come @SessionAttribute e non è possibile accedere alla mia pagina di visualizzazione.
Tuttavia, se la firma del secondo metodo viene modificato per questo ...
public String post(@ModelAttribute(value = "object1") Object1 object1,
@ModelAttribute(value = "object2") Object2 object2) {
... poi oggetto2 non ottiene cancellati dal modello ed è disponibile sulla mia pagina di visualizzazione.
Il Javadoc per @SessionAttributes dice:
... attributi saranno rimossi una volta il gestore indica il completamento della sua sessione di conversazione.
Ma non vedo come ho indicato il completamento della sessione conversazionale nel primo esempio ma non nel secondo esempio.
Qualcuno può spiegare questo comportamento o è un bug?
Questo problema è stato risolto nella primavera 3.0RC1. Vedi http://jira.springsource.org/browse/SPR-6084 Grazie Juergen! –