![](/img/trans.png)
[英]How can i get error message in form:errors tag by using MultiActionController?
[英]How to bind validation errors to a request using MultiActionController?
我已经尝试了很多在MultiActionController内实现验证的方法,但这似乎并非一帆风顺。 我需要验证一个表单,如果发生故障,我想重定向到同一表单,显示错误并能够从数据库中加载一些信息。 所以基本上我有这个:
@RequestMapping("/addResponse.htm")
public ModelAndView addResponse(@ModelAttribute("responseDTO") ResponseDTO
respDTO, BindingResult result, HttpServletRequest request) {
ResponseFormValidator respValidator = new ResponseFormValidator();
respValidator.validate(respDTO, result);
if (result.hasErrors()) {
return new ModelAndView("redirect:responseForm.htm?id=" + respDTO.getProjID());
}
}
我想要的是让responseForm处理程序方法记住由验证过程(结果对象)导致的错误,当然,我可以将该方法的逻辑复制并粘贴到我的if语句中,但我认为它必须更好不仅仅是复制和粘贴。
任何帮助将不胜感激!
在3.1.x之前的Spring版本中,如果要通过重定向传递对象,则必须使控制器具有“会话”意识。 http://static.springsource.org/spring/docs/2.5.x/reference/portlet.html#portlet-controller (第16.9部分,查找@SessionAttribute)
但是,您有责任清除不希望再使用的会话中存储的对象。
在Spring 3.1.x中,flashAttribute是一种非常有用的机制,而Spring可以做到这一点。
以下是一些代码来说明原理:
@RequestMapping(value = "form", method = RequestMethod.GET)
public String showForm(@ModelAttribute("form") FormBean formBean) {
// Set some properties if needed
return "tiles-litools-mml";
}
@RequestMapping(value = "form", method = RequestMethod.POST)
public String formAction( @Validated({MyValidator.class})
@ModelAttribute("form") FormBean formBean,
BindingResult validatorresult, Model model, Errors errors,
RedirectAttributes redirectAttributes) {
//redirect if any error
if (validatorresult.hasErrors()){
redirectAttributes.addFlashAttribute("message", "MML session failed");
redirectAttributes.addFlashAttribute("form", formBean);
redirectAttributes.addFlashAttribute("validation", validatorresult);
return "redirect:/app/tools/form"; // redirect to the form GET method
}
// TODO continue code for process the form (valid!)
}
我假设您不扩展MultiActionController。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.