Tôi đang sử dụng xác thực dựa trên chú thích dựa trên Spring 3. Tôi muốn thêm một xác nhận sau cho lĩnh vực ChuỗiVà/Hoặc điều kiện trong xác nhận dựa trên chú thích mùa xuân
Dòng có thể Null HOẶC nó nên chứa một chuỗi không có sản phẩm nào
Tôi biết chú thích như @Null
, @NotEmpty
nhưng làm thế nào tôi có thể sử dụng cả hai với một điều kiện OR?
Giải pháp:
Sử dụng @Size(min=1)
giúp nhưng nó không xử lý không gian. Vì vậy, thêm chú thích tùy chỉnh NotBlankOrNull
sẽ cho phép null
và các chuỗi không trống cũng sẽ chú ý đến các khoảng trống. Cảm ơn rất nhiều @Ralph.
Đây là Chú tôi
@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 lớp
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) {
}
}
Tôi cũng đã cập nhật nó trên site tôi.
Cảm ơn rất nhiều gợi ý và sửa tôi .Tôi đã thử '@Size (min = 1)' và nó hoạt động đối với 'null' và chuỗi rỗng. Chỉ cần tự hỏi làm thế nào để đối phó với nếu người dùng vào không gian? – xyz
@Ajinkya: hãy xem mã nguồn chú thích NotBlank. Một lần nữa nó được chú thích với NotNull. Nhưng nó được validatedBy NotBlankValidator (fortunaly NotBlankValidator trả về true (hợp lệ) cho null). Vì vậy, bạn cần chú thích của riêng bạn nhưng có thể tái sử dụng việc thực hiện Validator> '@Constraint (validatedBy = {NotBlankValidator.class}) @ Mục tiêu ... @ Retention ... public @interface NotBlankOrNull' – Ralph
Cảm ơn rất nhiều người đàn ông :) – xyz