2017-06-20 27 views
2

我有一个控制器在春季启动应用程序,它使用Hibernate验证器验证输入。当我调用其余端点时,它会正确验证,但我的控制器建议不会捕获它来自定义消息。我们只获得空载有效的404代码。春天mvc验证异常不处理ControllerAdvice

@RestController 
public class Controller { 

    @RequestMapping(method = RequestMethod.POST, path = RestPaths.LOAD_DATA) 
    public void loadCostCenterData(@RequestBody @Valid ClientDto dto) { 
    } 
} 

@RestControllerAdvice 
public class WickesGlobalExceptionMapper extends ResponseEntityExceptionHandler { 

    @ExceptionHandler(Exception.class) 
    public ResponseEntity handleOtherUnexpectedException(Exception ex, WebRequest request) { 
    } 

} 
+0

你能分享应用程序日志?当你遇到404错误时,你在控制台上做了什么? – fiskra

+1

我会说这是因为RestControllerAdvise注释暗示你的方法有@ReponseBody。 改为使用ControllerAdvise。 – Rlarroque

+0

谢谢@Rlarroque,你是对的。休息是原因,当我删除它时,它开始正常工作。 – krmanish007

回答

1

下面是一个使用模型视图,而不是ResponseEntity工作ControllerAdvise:

@ControllerAdvice 
public class WickesGlobalExceptionMapper { 

    @ExceptionHandler(IllegalArgumentException.class) 
    @ResponseStatus(HttpStatus.BAD_REQUEST) 
    public ModelAndView handleInvalidArgument(IllegalArgumentException ex) { 
    ModelAndView modelAndView = new ModelAndView(); 
    modelAndView.setView(new MappingJackson2JsonView()); 
    modelAndView.addObject("errorMessage", format("{0}", errorMessage)); 
    return modelAndView; 
    } 
}