Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ControllerAdvice不处理spring mvc验证异常_Java_Spring Mvc_Spring Boot_Error Handling - Fatal编程技术网

Java ControllerAdvice不处理spring mvc验证异常

Java ControllerAdvice不处理spring mvc验证异常,java,spring-mvc,spring-boot,error-handling,Java,Spring Mvc,Spring Boot,Error Handling,我在spring boot应用程序中有一个控制器,它使用Hibernate验证器验证输入。每当我调用rest端点时,它都会正确验证,但我的控制器建议没有捕捉到它,以自定义消息。我们只得到404代码和空负载 @RestController public class Controller { @RequestMapping(method = RequestMethod.POST, path = RestPaths.LOAD_DATA) public void loadCostCen

我在spring boot应用程序中有一个控制器,它使用Hibernate验证器验证输入。每当我调用rest端点时,它都会正确验证,但我的控制器建议没有捕捉到它,以自定义消息。我们只得到404代码和空负载

@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) {
    }

}

以下是一个使用ModelView而不是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;
  }
}

你能分享应用程序日志吗?当您得到404错误时,您在控制台上做了什么?我想说这是因为RestControllerAdvise注释在您的方法上暗示了@ReponseBody。试试ControllerAdvise。谢谢@Rlarroque,你说得对。休息是原因,当我移除它时,它开始正常工作。