legacy/Spring

[Spring-Error] @NotBlank 검증 오류, No validator could be found

heemang_e 2023. 7. 6. 22:17

 

문제 발생

@NotBlank
@Range(min=10, max=100)
private Integer userAge;

필드에 @NotBlank을 사용하였는데 다음과 같은 오류를 발생시켰다.

 

No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Integer'. Check configuration for 'userAge'

 

보아하니 @NotBlank 애너테이션에 문제가 있어 보인다. 

 

해결

일단 @NotBlank의 역할은 "", " ", null 세 개를 허용하지 않는다. 생각해보니 userAge 필드는 Integer 타입이다. Integer 타입은 애초에 문자열이 들어갈 수 없으니까 Bean Validation이 정상적으로 수행되지 않는 것이다.

 

결론

Integer 타입에는 @NotNull을 사용해서 null 값인 상태를 방지하자.

@NotBlank는 @NotEmpty 애너테이션에 " "을 금지하는 것이 추가된 것이므로, @NotNull도 Integer 타입의 필드에는 사용할 수 없다.