2015-10-05 2 views
0

J'ai une page pour ajouter un utilisateur "/ user/userAdd". Dans GET, je remplis une liste de pays. En POST, je valide l'objet User à partir de formsubmit. Si elle a une erreur, je reviens à la même page avec msg erreur. Mon problème est que je fais juste un simple retour "/ user/userAdd"; la liste Pays n'est pas renseignée. Si je fais un retour "rediriger:/user/userAdd"; Je perds l'entrée utilisateur précédente. Comment dois-je gérer cela?Retour du ressort après validation

@RequestMapping(value = "/user/userAdd", method = RequestMethod.GET) 
public void getUserAdd(Model aaModel) { 
    aaModel.addAttribute("user", new User()); 

    List<Country> llistCountry = this.caService.findCountryAll(); 

    aaModel.addAttribute("countrys", llistCountry); 
} 

@RequestMapping(value = "/user/userAdd", method = RequestMethod.POST) 
public String postUserAdd(@ModelAttribute("user") @Valid User user, 
     BindingResult aaResult, SessionStatus aaStatus) { 
    if (aaResult.hasErrors()) { 

     return "/user/userAdd"; 
    } else { 
     user = this.caService.saveUser(user); 

     aaStatus.setComplete(); 
     return "redirect:/login"; 
    } 
} 

Répondre

2

Je faisais également face à des problèmes similaires dans mon projet de printemps. Je recommande de changer votre méthode POST à ​​suivre

@RequestMapping(value = "/user/userAdd", method = RequestMethod.POST) 
public String postUserAdd(@ModelAttribute("user") @Valid User user, 
     BindingResult aaResult, Model aaModel, SessionStatus aaStatus) { 
    if (aaResult.hasErrors()) { 
     List<Country> llistCountry = this.caService.findCountryAll(); 
     aaModel.addAttribute("countrys", llistCountry); 

     return "/user/userAdd"; 
    } else { 
     user = this.caService.saveUser(user); 

     aaStatus.setComplete(); 
     return "redirect:/login"; 
    } 
} 

Ici, la liste est à nouveau ajouté au modèle et il sera également conserver les valeurs sélectionnées (le cas échéant) dans l'interface utilisateur.

Espérons que cela aide