Tôi có một lớp bean với nhiều ràng buộc bên trong (tùy chỉnh) và một ràng buộc mức lớp. Tôi muốn xác thực các ràng buộc bên trong trước ràng buộc mức lớp. Mã trông giống như sau:Xác thực Bean Java: GroupSequence với Constraint Cấp Lớp
@GroupSequence({ Inner.class, NewSlotBean.class })
@TotalBeanValid(groups = NewSlotBean.class)
public class NewSlotBean {
@DayMonthYearString(groups = Inner.class)
private String slotDay;
@TimeString(groups = Inner.class)
private String slotBegin;
@LengthString(groups = Inner.class)
private String slotLength;
}
(Inner
chỉ là một giao diện trống nằm xung quanh một nơi nào đó).
Tuy nhiên, khi tôi cố gắng chạy điều này, ràng buộc mức lớp không được xác thực. Khi tôi cố gắng để xác định GroupSequence như
@GroupSequence({ Inner.class, Outer.class })
(với Outer
là một giao diện ngẫu nhiên), tôi nhận được ngoại lệ:
javax.validation.GroupDefinitionException: ...*.beans.NewSlotBean must be part of the redefined default group sequence.
Liệu s/o biết làm thế nào để đảm bảo rằng các lớp cấp ràng buộc được xác nhận sau khi những cái bên trong? (!. Đây không phải dường như là mặc định tôi đã có vấn đề ngẫu nhiên với nó nảy lên sau một thời gian)
Chỉ cần một gợi ý cải tiến đến một câu trả lời tuyệt vời: nó có thể tốt hơn để nhóm kiểm chứng thực theo cách khác xung quanh: '@GroupSequence ({NewSlotBean.class, ClassLevel.class}) @TotalBeanValid (nhóm = ClassLevel.class) 'trên lớp' NewSlotBean' và sau đó loại bỏ nhóm xác nhận 'Nhóm nội bộ' và các phép gán nhóm cấp trường - các xác thực trường được gán tự động cho nhóm xác nhận mặc định. Ít mã hơn, sạch hơn. – jannis