Je pense que je suis confondu un peu de la session Annotation au printemps MVC.
J'ai un code comme celui-ci (exemple de formulaire de formulaire de 2 étapes, STEP 1 Données utilisateur, Adresse étape 2) P>
@SessionAttributes({"user", "address"}) public class UserFormController { @RequestMapping(method = RequestMethod.GET) public ModelAndView show( ModelAndView mv ){ mv.addObject( new User() ); mv.addObject( new Address() ); mv.setViewName("user_add_page"); return mv; } @RequestMapping(method = RequestMethod.POST) public String processForm( User user, BindingResult result ){ new UserValidator().validate(user, result); if( result.hasErrors() ){ return "user_add_page"; }else{ return "redirect:/user_form/user_add_address"; } // ......... }
3 Réponses :
Selon le Manuel de référence Spring 3.0 , il semble que @SessionAttributes est destiné à être utilisé sur un type que vous souhaitez enregistrer de manière transparente dans la session, telle qu'une" commande "Ou un objet de soutien de la forme. Je ne pense pas que vous voudriez stocker un contrôleur en session. p>
HYMMM ... Non, je ne voulais pas stocker contrôleur en session. Mon problème est que lorsque votre session expire votre utilisateur et vos objets d'adresse (les haricots de la tenue de données régulières) sont nuls. Je me suis arrêté avec @ExceptionHandler (httpspessiequireRegeException.class) Model PublictandView HeathException () {Modelandview mv = New ModelandView ("Redirection: / user_form"); mv.addObject (nouvel utilisateur ()); mv.addObject (nouvelle adresse ()); retour mv; } Mais ce n'est pas exactement ce que j'avais à l'esprit, j'espérais une solution plus propre
@sessessattributes code> est destiné à configurer quels objets que vous souhaitez stocker dans la session. Cela n'indique pas que le contrôleur est lié à la session (pour qu'il existe un
@scope code> annotation).
1.Je créer des objets vides s'il manque dans la session et accepter Soumettre P> blockQuote>
Utiliser
@modelattribute ("utilisateur") code> méthode annotée pour fournir la valeur par défaut p>
2.Je retour sur le formulaire utilisateur avec un message P> blockQuote>
Utiliser
@ExceptionHandler (httpessespaceRequiredException.class) code> - méthode annotée p>
À côté de cet ajout @modelattribute code> à l'attribut code> code> dans la méthode code> processus code>.
Essayez de vérifier ici:
http: //forum.springsource .org / showthread.php? t = 63001 & Highlight = httpsPessiequiredException p>