正如 @ChristianMaioliM 在评论中所要求的那样,添加了有关以下内容的更多详细信息:代码中的问题是
BindingResult参数未遵循模型对象 。
Errors或BindingResult参数必须跟随立即绑定的模型对象,因为方法签名可能具有多个模型对象,并且Spring将为它们中的每个对象创建一个单独的BindingResult实例,因此以下示例将不起作用
参考docs
BindingResult和@ModelAttribute的无效顺序
要解决此问题,请更改您的控制器方法处理程序签名,以遵循BindingResult和模型对象之间的参数顺序,例如:
从:
@RequestMapping(value="/uploadForm",method = RequestMethod.POST)public @ResponseBody String uploadForm1(@ModelAttribute("admin") BillingAndRecon billingandrecon,@RequestParam String id,BindingResult result,Principal principal,@RequestParam MultipartFile file,HttpSession session) throws ServiceException, DaoException, IllegalStateException, IOException {至:
@RequestMapping(value="/uploadForm",method = RequestMethod.POST)public String uploadForm1( @ModelAttribute("admin") BillingAndRecon billingandrecon, BindingResult result, Principal principal, HttpSession session) throws ServiceException, DaoException, IllegalStateException, IOException { //do file save here return "some-view-name";}并在BillingAndRecon类中添加mulitpart / binding字段,例如:
public class BillingAndRecon { private MultipartFile file; private String id; no-arg constructor; getters; setters;}注意: BindingResult参数应在
@ModelAttrubiute/@RequestBody
和jsp形式:
<form:form action="${pageContext.request.contextPath}/uploadForm" method="post" enctype="multipart/form-data" modelAttribute="admin"> <input type="file" name="file" /> <form:input path="id" /></form:form>并且不要忘记在GET处理程序中添加绑定实例,例如:
@RequestMapping(value="/uploadForm",method = RequestMethod.GET)public String uploadFormView(Model model){ model.addAttribute("admin", new BillingAndRecon()); return "your-upload-view-name";}


