Quand dois - @SessionAttributes dans spring mvc supprimé? (Avec le code de l'échantillon)

Dans quelles circonstances exactes n' @SessionAttributes obtenir effacée? J'ai découvert quelques confus de comportement lors de l'utilisation de deux modèles dans une page.

Quand je fais un suivi par un POST à l'aide de ce contrôleur...

@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";
  }
}

...objet2 est effacée à partir du Modèle. Il n'existe plus en tant que @SessionAttribute et ne peut pas être consulté sur ma page d'affichage.

Toutefois, si la signature de la seconde méthode est modifié de façon à ce...

public String post(@ModelAttribute(value = "object1") Object1 object1,
                   @ModelAttribute(value = "object2") Object2 object2) {

...puis objet2 ne pas obtenir effacée du modèle et est disponible sur ma page d'affichage.

La javadoc de @SessionAttributes dit:

... attributs seront supprimés une fois
le gestionnaire indique la fin de
sa session de conversation.

Mais je ne vois pas comment je l'ai indiqué à l'achèvement de la session de conversation dans le premier exemple, mais pas dans le deuxième exemple.

Quelqu'un peut expliquer ce comportement ou est-ce un bug?

Ce problème a été résolu au Printemps 3.0RC1. Voir jira.springsource.org/browse/SPR-6084 Merci Juergen!

OriginalL'auteur Daniel Alexiuc | 2009-09-03