Je fais la chose de contrôleur basé sur l'annotation de printemps 3. Le problème est, quand il échoue la validation, les données de référence sont perdues, à savoir les trucs countryDivisions. Je ne l'ai pas mis dans le formulaire parce que ses données ne sont pas éditables par l'utilisateur, et l'orthodoxie ici est que seules les données modifiables par l'utilisateur vont dans le formulaire. Ai-je d'autres choix?les données de référence sont perdues lorsque le formulaire échoue la validation dans le contrôleur basé sur des annotations spring3
@Controller
public class MyInfoController {
@Autowired
private MyInfoFormValidator validator;
private void loadReferenceData(ModelMap model) {
model.put("countryDivisions",countryDivisionService.getCountryDivisionOrderedByCode());
}
@ModelAttribute
private MyInfoForm loadMyInfo() {
MyInfoForm form = new MyInfoForm();
//load it up
return form;
}
@RequestMapping(value="/editMyInfo", method = RequestMethod.GET)
public String editMyInfo(ModelMap model) {
loadReferenceData(model);
return "contactEdit";
}
@RequestMapping(value="/editMyInfo", method = RequestMethod.POST)
public String saveMyInfo(ModelMap model, MyInfoForm form,BindingResult result) {
validator.validate (form,result);
if (result.hasErrors()) {
model.put("commandName", "myInfoForm");
return "contactEdit";
}
//save some stuff
return "redirect:viewMyInfo";
}
}
Merci! Ça a du sens. Pour une raison quelconque, il ne m'est pas venu à l'esprit d'avoir plus d'une méthode annotée à @ModelAttribute – nont
Vous êtes les bienvenus! Il est tout à fait correct d'avoir plusieurs méthodes annotées avec @ModelAttribute dans un seul contrôleur. – stefanglase