@Valid不适用于jax rs和springboot

时间:2018-12-28 09:03:20

标签: java rest spring-boot jersey jax-rs

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

当我使用MVC(使用@ControllerAdvice)批注时,代码运行良好,但不确定当我发送违反实体(pojo类)中提到的约束的数据时,它仅抛出{{1 }}(对于所有验证失败),但不是NotFoundExceptionMethodViolationException

我无法针对该特定违规发送消息。

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

代码:

ConstraintViolationException

POJO:

@POST
@Path("/customers/add") 
public Response addCustomer(@Valid customer cust) 
{

// Rest of the code

} 

}

异常处理程序:

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

**更新1

如果启用了send_error_in_response,我会收到此消息,但不确定为什么我的自定义异常处理程序无法捕获此异常而仅引发NotFoundException

1 个答案:

答案 0 :(得分:0)

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

@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