Мне нужно создать аннотацию пользовательского ограничения, которая может получить доступ к значению другого поля моего bean. Я буду использовать эту аннотацию для проверки поля, потому что он зависит от значения другого, но так, как я его определяю, компилятор говорит: "Значение атрибута аннотации" моего поля "должно быть постоянным выражением".
Я определил его таким образом:
@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
}
}
и в моем bean мне нужно что-то вроде этого:
public class MyBean{
private String field1;
@EqualsField(field=field1)
private String field2;
}
Есть ли способ определить аннотацию, поэтому значение поля может быть переменной?
Спасибо