2016-04-15 37 views
2

我现在有这样的过程,通过初始表单页面上传一个文件的Spring MVC的servlet。处理Spring MVC异常作为验证错误

请求处理程序已经做了一些验证的文件,如果缺少一定的要求,但不幸的是它不能很容易地分辨,如果所有的要求都满足,直到处理实际发生。

@RequestMapping(path = "/", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 
public String submit(@Valid FormData form, BindingResult result, Model model) throws IOException, ParseException 
{ 
    if (result.hasErrors()) 
    { 
     return "index"; 
    } 

    processFile(form.getFile()); 

    return "success"; 
} 

如果发生在处理步骤的异常,我处理它在@ExceptionHandler注解的方法。但是,这种方法需要具有用于显示在JSP页面中的误差的第二行:该方法本身看起来像

@ExceptionHandler(Exception.class) 
public String databaseError(Model model, Exception e) 
{ 
    model.addAttribute("formData", new FormData()); 
    model.addAttribute("error", "File failed to process. Please verify the contents of the file."); 
    return "index"; 
} 

<form:input type="file" name="file" path="file" value=""/> 
<form:errors path="file" element="label" class="error" for="file"/> 
<c:if test="${not empty error}"><label class="error">${error}</label></c:if> 

有没有一种办法,把杠杆BindingResult处理异常的验证错误以避免冗余错误消息模板?

回答

1

您可以赶上你的请求处理方法里面的异常,然后操纵BindingResult你钓到的鱼子句。

+0

你知道,我只是完全驳回从我的想法是想法。捕捉DataAccessException时是否应该担心?我记得在某个地方读到这是你不应该接触的东西,这就是为什么我以前没有想过。 – Aetylus