Elimizde şöyle bir kod olsun
public class SampleRequest {@NotNullLocalDate startDate;@NotNullLocalDate endDate;@AssertTrue(message = "Start date is after the end date")public boolean isEndDateAfterStartDate() {return !endDate.isBefore(startDate);}}
Jakarta Constraint anotasyonları rastgele sırada yani karışık sırada çalışıyor. Bu yüzden endDate alanı null ise @NotNull'dan önce @AssertTrue çalışabilir ve NullPointerException alırız. Bunu önlemek için Jakarta'ya bir sıralama belirtmek gerekir. Bunun için @GroupSequence Anotasyonu kullanılır. Buna Validation Groups deniliyor.
Şöyle yaparız. Önce groups değerine sahip olmayanlar daha sonra da groups olarak DateExtendedValidation değerine sahip olan Constraint anotasyonları çalıştırılır
// introduce the flag interface for group marking public interface DateExtendedValidation {} @GroupSequence({SampleRequest.class, DateExtendedValidation.class}) public class SampleRequest { @NotNull LocalDate startDate; @NotNull LocalDate endDate; @AssertTrue(message = "Start date is after the end date", groups = DateExtendedValidation.class) public boolean isEndDateAfterStartDate() { return !endDate.isBefore(startDate); } }
Hiç yorum yok:
Yorum Gönder