Tôi sử dụng xác thực bean trong dự án của mình và tôi muốn viết trình xác thực tùy chỉnh cho chú thích ràng buộc hiện có.Đăng ký ConstraintValidator tùy chỉnh cho Hạn chế hiện tại
Ví dụ: tôi có một lớp đại diện cho ngày/giờ có tên CustomDateTime
. Trong một lớp học có sử dụng lớp này như ví dụ như một ngày sinh tôi muốn chú thích lĩnh vực này với @Past
:
public class Person
{
@Past
private CustomDateTime dateOfBirth;
}
tôi sau đó tạo ra một validator tùy chỉnh bằng cách thực hiện ConstraintValidator<Past, CustomDateTime>
. Tuy nhiên, điều này không hoạt động vì việc triển khai xác thực không có kiến thức về trình xác thực tùy chỉnh. Sau đó nó ném: javax.validation.UnexpectedTypeException: No validator could be found for type: com.example.CustomDateTime
.
Tôi biết rằng bạn thường tạo ra một chú thích riêng như thế này:
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {CustomDateTimePastValidator.class})
public @interface Past
{
....
}
Nhưng điều đó có vẻ như đang tăng gấp đôi với tôi ;-)
Làm thế nào tôi có thể đăng ký các validator tùy chỉnh để được sử dụng với @Past
?
@ siebz0r Nó có hiệu quả với bạn không? –