티스토리 뷰

반응형
반응형

부끄럽지만 Validation anotation 을 사용하면서 아래와 같이
NotNull은 null만 체크하고 NotEmpty는 ""만 체크하는 줄 알고 아무 생각없이 사용했습니다.

    @NotEmpty @NotNull 
    @JsonProperty("phoneNumber") 
    private String phoneNumber; 

    @NotEmpty @NotNull 
    @JsonProperty("privateYn") 
    private String privateYn; 


처음에는 이렇게 해도 잘 검증이 되어 사용하다가 privateYn 변수의 타입을 boolean으로 바꿀일이 있었습니다.

    @NotEmpty @NotNull 
    @JsonProperty("phoneNumber") 
    private String phoneNumber; 

    @NotEmpty @NotNull 
    @JsonProperty("privateYn") 
    private boolean privateYn; 


컴파일 시 HV000030 : No validator could be found for constraint
Validation error: “No validator could be found for type: java.lang.Boolean

에러가 발생했고 찾아 보니 @NotEmpty는 String과 collection 타입에만 적용되기 때문에 boolean은 안된다는 것을 알게 되었습니다ㅠ

또한 굳이 @NotEmpty와 @NotNull을 함께 쓰지 않아도 되는 걸 알게 됐습니다.

javax.validation.constraints



@NotNull
The annotated element must not be null. Accepts any type.
모든 데이터 타입에 대해 null을 허용하지 않습니다.
출처:https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/NotNull.html



@NotEmpty
The annotated element must not be null nor empty. Supported types are:
CharSequence (length of character sequence is evaluated)
Collection (collection size is evaluated)
Map (map size is evaluated)
Array (array length is evaluated)

null과 ""를 허용하지 않습니다. 
출처:https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/NotEmpty.html



@NotBlank
The annotated element must not be null and must contain at least one non-whitespace character. Accepts CharSequence.
null과 ""와 " "(빈공백문자열)를 허용하지 않습니다.
출처:https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/NotEmpty.html


최종수정

    @NotEmpty 
    @JsonProperty("phoneNumber") 
    private String phoneNumber; 

    @NotNull 
    @JsonProperty("privateYn") 
    private boolean privateYn; 

++) 

위 변수에 추가로 사용해보면 좋을 것 같은 validation anotation입니다.

 

@AssertTrue          
@AssertFalse
true인지 false인지 검사. null은 체크하지 않음 

@Pattern 

값이 정규표현식에 일치하는지 검사. null은 체크하지 않음

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함