代码之家  ›  专栏  ›  技术社区  ›  newcoder

@valid不适用于jax-rs和springboot

  •  0
  • newcoder  · 技术社区  · 6 年前

    我得到 NotFoundException 尝试在spring boot rest应用程序中实现自定义异常处理时。

    当我使用mvc(使用 @ControllerAdvice )但不确定发送的数据是否违反了实体(pojo类)中提到的约束 NotFoundException异常 (对于所有验证失败)但不是 MethodViolationException ConstraintViolationException

    我无法为这一违反行为发出信息。

    不知道我在哪里犯了这个错误。请帮助

    代码:

    @POST
    @Path("/customers/add") 
    public Response addCustomer(@Valid customer cust) 
    {
    
    // Rest of the code
    
    } 
    

    POJO:

    @Entity
    @Table(name="cust")
    public class Customer
    {
      @NotNull
      @Size(min=1,max=50,message ="invalid name") 
      String name;
    

    }

    异常处理程序:

    @Provider
    public class CustomHandler implements ExceptionMapper<Exception>
    {
     public Response toResponse(Exception ex) 
     {
      if(ex instanceOf ConstraintViolationException) 
      {
        Do something
      } 
    } 
    

    **更新1

    如果我在响应中启用send_error_,我将收到此消息,但不确定为什么我的自定义异常处理程序无法捕获此异常,而只能引发notfoundexception

    1 回复  |  直到 6 年前
        1
  •  0
  •   sah1    6 年前

    尝试使用以下方法处理异常:

    @ControllerAdvice
    @RestController
    public class CustomizedResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
    
      @ExceptionHandler(StudentNotFoundException)
      public final ResponseEntity<ErrorDetails> handleUserNotFoundException(StudentNotFoundException ex, WebRequest request) {
        ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(),
            request.getDescription(false));
        return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
      }
    

    有关详细信息,请参阅 http://www.springboottutorial.com/spring-boot-validation-for-rest-services