Ich muss eine benutzerdefinierte Constraint-Annotation erstellen, die auf den Wert eines anderen Feldes meiner Bean zugreifen kann. Ich verwende diese Annotation, um das Feld zu validieren, da es vom Wert des anderen abhängt, aber die Art, wie ich es definiere, sagt der Compiler "Der Wert für das Annotationsattribut" meines Feldes "muss ein konstanter Ausdruck sein".Variables Feld in einer Constraint-Annotation
Ich habe es auf diese Weise definiert:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy=EqualsFieldValidator.class)
@Documented
public @interface EqualsField {
public String field();
String message() default "{com.myCom.annotations.EqualsField.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class EqualsFieldValidator implements ConstraintValidator<EqualsField, String>{
private EqualsField equalsField;
@Override
public void initialize(EqualsField equalsField) {
this.equalsField = equalsField;
}
@Override
public boolean isValid(String thisField, ConstraintValidatorContext arg1) {
//my validation
}
}
und in meiner Bohne möchte ich etwas wie folgt aus:
public class MyBean{
private String field1;
@EqualsField(field=field1)
private String field2;
}
Gibt es eine Möglichkeit die Anmerkung zu definieren, so dass der Wert Feld eine Variable sein?
Dank
Hallo, kann u den Arbeitscode teilen? Es wird sehr hilfreich sein. Selbst ich habe das gleiche Problem. –