Spring 3 주석 기반 유효성 검사를 사용하고 있습니다. 나는및/또는 Spring 주석 기반 유효성 검사 조건
이 필드를 또는가 아닌 빈 문자열을 포함해야 널이 될 수있는 문자열 필드에 대해 다음 유효성 검사를 추가 할
주석과 같은 @Null
, @NotEmpty
하지만 난 알고 난에 모두 사용할 수있는 방법 OR 조건?
솔루션 :
@Size(min=1)
을하는 데 도움이 사용하지만 공백을 처리하지 않습니다. 따라서 null
을 허용하고 비어 있지 않은 문자열도 허용하는 사용자 정의 주석 NotBlankOrNull
을 추가합니다. 또한 공백을 처리합니다. @ Ralph. 고마워.
여기
@Documented
@Constraint(validatedBy = { NotBlankOrNullValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
public @interface NotBlankOrNull {
String message() default "{org.hibernate.validator.constraints.NotBlankOrNull.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
Validator 클래스 내 주석 나는 또한 내 site에 업데이트 한
public class NotBlankOrNullValidator implements ConstraintValidator<NotBlankOrNull, String> {
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
if (s == null) {
return true;
}
return s.trim().length() > 0;
}
@Override
public void initialize(NotBlankOrNull constraint) {
}
}
입니다.
네 개의 제안과 저를 고맙다 고 고맙습니다.'@Size (min = 1)'을 시도했으며'null '및 비어 있지 않은 문자열에 대해 작동합니다. 사용자가 공백을 입력하는 경우 어떻게 대처해야하는지 궁금하십니까? – xyz
@Ajinkya : NotBlank Annotation 소스 코드를 살펴보십시오. 다시 NotNull로 annoteted됩니다. 그러나 그것은 유효하지 않습니다. NotBlankValidator (보통 NotBlankValidator는 null에 대해 true (유효한)을 반환합니다). 따라서 자신 만의 주석이 필요하지만 Validator 구현을 재사용 할 수 있습니다. @Constraint (validBy = {NotBlankValidator.class}) @ Target ... @ Retention ... public @interface NotBlankOrNull' – Ralph
고맙습니다. :) – xyz