Hibernate Validator 4.1+에서 @NotNull, @NotEmpty 및 @NotBlank의 차이점은 무엇입니까?
이 세 가지 주석의 차이점을 구별하는 요약을 사용할 수없는 것입니다.
@NotNull
: CharSequence를, 컬렉션,지도 또는 배열 object- 가 널 (null) 이 아니지만 비어 있을 수 있습니다.
@NotEmpty
: CharSequence, Collection, Map 또는 Array 객체가 null이 아니고 size> 0 입니다.
@NotBlank
: 먹을 것이 없으니 아니고 잘린 길이가 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;
흥미롭게도이 방법은 null이 null이면 true를 반환하지만 잘린 경우에만 false를 반환
@NotEmpty
합니다@NotNull
. 앞에서 언급했듯이 정의에도 요구 하기 때문에 null이면 true를 반환하는 것이 좋습니다.
다음은 몇 가지 예입니다.
공유 이름 = null;
@NotNull
: 거짓
@NotEmpty
: 거짓
@NotBlank
: 거짓공유 이름 = "";
@NotNull
: 참
@NotEmpty
: 거짓
@NotBlank
: 거짓공유 이름 = "";
@NotNull
: 참
@NotEmpty
: 참
@NotBlank
: 거짓높은 곳 이름 = "훌륭한 답변!";
@NotNull
: 참
@NotEmpty
: 참
@NotBlank
: 참
나는 아래 링크에서 설명을 좋아했다 : http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/
@NotNull : 내용을 무시하고 값이 null이 아닌지 확인
@NotEmpty : 값이 null 또는 비어 있지 않은지 확인합니다. 빈 공간 만 있으면 비워 둘 수 없습니다.
@NotBlank : 값이 null인지 비어 확인하여 값을 먼저 다듬습니다. 즉, 빈 공간 만 허용하지 않습니다.
따라서 필드가 null이 아니고 빈 공간이 아니라 텍스트가 있는지 확인해야 @NotBlank를 확인합니다.
@NotNull:
하지만 CharSequence, Collection, Map 또는 Array는 null이 아닌 한 유효하지만 비어있을 수 있습니다.@NotEmpty:
거의 CharSequence, Collection, Map 또는 Array는 null이 아니고 크기 / 길이가 0보다 큰 한 유효합니다.@NotBlank:
더 많은 것은 null이 아니고 잘린 길이가 0보다 큰 한 유효합니다.
'IT' 카테고리의 다른 글
Chart.js v2- 격자 선 배포 (0) | 2020.08.06 |
---|---|
언제 thread.start () 대신 java의 thread.run ()을 호출하고? (0) | 2020.08.06 |
div 내의 요소 만화하는 jQuery (0) | 2020.08.06 |
TSQL의 COALESCE 함수 (0) | 2020.08.06 |
Java 클래스에서 SOAP 웹 서비스 호출을 수행하는 방법은 무엇입니까? (0) | 2020.08.05 |