Ich möchte ein NotNull
Scheck bauen, die nur auf Create
Gruppe arbeiten, ich kann wie dieser Das funktioniert nicht, weil Komponieren erstellenKann ich eine Bean-Validierungsannotation mit einer Gruppe hinzufügen?
@Data
public static class TestDto {
@NotNullOnCreate
// @NotNull(groups = Create.class) // instead of this
private String id;
}
ich die NotNullOnCreate
wie diese
@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();
}
}
so schreiben Constraint Annotations (siehe ConstraintDescriptorImpl#createComposingConstraintDescriptor) Gruppe wird auf die Gruppe der Host Annotation gesetzt ('Default').
Ich habe auch versucht, diese Class<?>[] groups() default {Create.class};
, aber dies nicht erlaubt ist, muss die Standardgruppe leer.
Wie kann ich das erreichen? Ich möchte die Gruppe nicht überall schreiben.
EDIT
- erstellen HV-1355 Constraint Annotation mit expliziten Gruppen
- Schrieb ein funktionierendes Demo-Projekt hv-annotation-with-group
Danke, ich habe HV-1355 erstellt – wener