0
我想建立一個NotNull
檢查,只有在Create
組的工作,這樣我就可以這樣我可以添加組驗證註釋嗎?
@Data
public static class TestDto {
@NotNullOnCreate
// @NotNull(groups = Create.class) // instead of this
private String id;
}
寫我創建NotNullOnCreate
這樣
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Repeatable(NotNullOnCreate.List.class)
@ReportAsSingleViolation
@Constraint(validatedBy = {})
@NotNull(groups = Create.class)
@interface NotNullOnCreate {
String message() default "{javax.validation.constraints.NotNull.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@interface List {
NotNullOnCreate[] value();
}
}
這是不行的,因爲組成約束條件註釋(見ConstraintDescriptorImpl#createComposingConstraintDescriptor)組將被設置爲主機註釋組(默認)。
我也試過這個Class<?>[] groups() default {Create.class};
,但這是不允許的,默認組必須是空的。
我該如何做到這一點?我不想在任何地方寫這個小組。
編輯
- 創建HV-1355有明確約束組註釋
- 寫了一個可行的示範項目hv-annotation-with-group
謝謝,我創建了HV-1355 – wener