Hibernate Validator 4.1+에서는 @NotNull, @NotEmpty 및 @NotBlank의 차이점은 무엇입니까?
이 세 가지 주석의 차이를 구별할 수 있는 요약을 찾을 수 없을 것 같습니다.
@NotNull
: CharSequence, Collection, Map 또는 Array 개체는 늘이 아니지만 비워 둘 수 있습니다.
@NotEmpty
: CharSequence, Collection, Map 또는 Array 객체가 null이 아니라 size > 0입니다.
@NotBlank
: 문자열이 null이 아니며 잘라낸 길이가 0보다 큽니다.
이해를 돕기 위해 다음 제약사항이 어떻게 정의되고 수행되는지 살펴보겠습니다(버전 4.1을 사용 중입니다).
그
@NotNull
제약조건은 다음과 같이 정의됩니다.@Constraint(validatedBy = {NotNullValidator.class})
이 클래스에는
isValid
메서드는 다음과 같이 정의됩니다.public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) { return object != null; }
그
@NotEmpty
제약조건은 다음과 같이 정의됩니다.@NotNull @Size(min = 1)
따라서 이 제약조건은
@NotNull
위의 제약 조건 및@Size
그 정의는 오브젝트에 따라 다르지만 스스로 설명해야 합니다.마지막으로,
@NotBlank
제약조건은 다음과 같이 정의됩니다.@NotNull @Constraint(validatedBy = {NotBlankValidator.class})
따라서 이 제약조건은 또한
@NotNull
구속조건은 NotBlankValidator 클래스로 구속됩니다.이 클래스에는isValid
메서드는 다음과 같이 정의됩니다.if ( charSequence == null ) { //curious return true; } return charSequence.toString().trim().length() > 0;
흥미롭게도 이 메서드는 문자열이 늘인 경우 true를 반환하고 잘린 문자열의 길이가 0인 경우에만 false를 반환합니다.null일 경우 true를 반환하는 것은 괜찮습니다.왜냐하면 제가 말씀드렸듯이
@NotEmpty
정의에도 필요@NotNull
.
다음은 몇 가지 예입니다.
문자열 이름 = null;
@NotNull
: false(거짓)
@NotEmpty
: false(거짓)
@NotBlank
: false(거짓)문자열 이름 = " ,
@NotNull
: 참
@NotEmpty
: false(거짓)
@NotBlank
: false(거짓)문자열 이름 = ";
@NotNull
: 참
@NotEmpty
: 참
@NotBlank
: false(거짓)문자열 이름 = "좋은 답변입니다!";
@NotNull
: 참
@NotEmpty
: 참
@NotBlank
: 참
아래 링크의 설명이 마음에 들었습니다.http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/
@NotNull:내용을 무시하고 값이 null이 아닌지 확인합니다.
@Not Empty:값이 null 또는 공백이 아닌지 확인합니다.빈 공간만 있으면 비어 있지 않은 것으로 간주됩니다.
@NotBlank:값이 null 또는 비어 있지 않은지 확인하고 먼저 값을 트리밍합니다.빈 공간만 허락하지 않는다는 뜻입니다.
따라서 필드가 null이 아닌 빈 공간만 있는 것이 아니라 텍스트가 포함되어 있는지 검증하려면 @NotBlank를 사용해야 합니다.
@NotNull:
제약된 CharSequence, Collection, Map 또는 Array는 null이 아닌 한 유효하지만 비워둘 수 있습니다.@NotEmpty:
CharSequence, Collection, Map 는 、 Array 이 null 이이이이이이이길 / 0 보보보보보0 보보 。@NotBlank:
구속된 문자열은 null이 아니고 잘린 길이가 0보다 큰 경우에만 유효합니다.
언급URL : https://stackoverflow.com/questions/17137307/in-hibernate-validator-4-1-what-is-the-difference-between-notnull-notempty
'IT' 카테고리의 다른 글
선택한 라디오 버튼의 값을 가져오려면 어떻게 해야 합니까? (0) | 2022.10.18 |
---|---|
IntelliJ Import 정리 (0) | 2022.10.18 |
16진수 문자열을 int로 변환 (0) | 2022.10.18 |
Srow Error('msg') vs Throw new Error('msg') (0) | 2022.10.18 |
왜 process.env인가.NODE_ENV가 정의되지 않았습니까? (0) | 2022.10.18 |