我有一个带有方法参数的控制器,如模型说
public Response create(Customer customer){
}
客户模式:客户模型看起来像
@JsonTypeInfo( use = JsonTypeInfo.Id.NAME,property = "type")
@JsonSubTypes({@Type(value = Config.class, name = "IPC")})
public class Customer(){
private String type; }
答案 0 :(得分:0)
尝试使用@ExceptionHandler注释
Spring 4(http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-exceptionhandler)的文档指出
HandlerExceptionResolver接口和 SimpleMappingExceptionResolver实现允许您映射 特定视图的异常以声明方式与一些可选视图一起使用 转发到那些视图之前的Java逻辑。但是,在某些情况下, 特别是在依赖@ResponseBody方法而不是视图时 分辨率,直接设置状态可能更方便 响应并可选择将错误内容写入主体 响应。
您可以使用@ExceptionHandler方法执行此操作。在a。中声明 控制器这样的方法适用于@RequestMapping引发的异常 该控制器(或其任何子类)的方法。你也可以 在@ControllerAdvice类中声明一个@ExceptionHandler方法 在这种情况下,它处理来自@RequestMapping方法的异常 很多控制器。以下是控制器本地的示例 @ExceptionHandler方法:
因此,在您的控制器中,您可以使用这样的方法
@ExceptionHandler(MethodArgumentNotValidException.class)
public String handleArgumentNotValid(MethodArgumentNotValidException e, ModelMap map, HttpServletRequest request) {
List<ObjectError> errors = e.getBindingResult() .getAllErrors();
//you can get the exception e,
//you can get the request
//handle whatever you want the then return to view
return "your view that you will handle the exception";
}