Spring Return 验证后
Spring Return after Validation
我有一个添加用户“/user/userAdd”的页面。在 GET 中,我填充了一个国家列表。在 POST 中,我验证了表单提交中的用户对象。如果有错误,我 return 返回到带有错误消息的同一页面。我的问题是我只是做了一个简单的 return "/user/userAdd";国家列表未填充。如果我做 return "redirect:/user/userAdd";我失去了以前的用户输入。我该如何处理?
@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";
}
}
我在 spring 项目中也遇到了类似的问题。我建议将您的 POST 方法更改为以下
@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";
}
}
在这里,列表再次添加到模型中,它还将保留先前在 UI 中选择的值(如果有)。
希望对您有所帮助
我有一个添加用户“/user/userAdd”的页面。在 GET 中,我填充了一个国家列表。在 POST 中,我验证了表单提交中的用户对象。如果有错误,我 return 返回到带有错误消息的同一页面。我的问题是我只是做了一个简单的 return "/user/userAdd";国家列表未填充。如果我做 return "redirect:/user/userAdd";我失去了以前的用户输入。我该如何处理?
@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";
}
}
我在 spring 项目中也遇到了类似的问题。我建议将您的 POST 方法更改为以下
@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";
}
}
在这里,列表再次添加到模型中,它还将保留先前在 UI 中选择的值(如果有)。
希望对您有所帮助