Witam,

napisałem sobie taki oto validator

@Target({TYPE, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = FieldMatchValidator.class)
@Documented
public @interface FieldMatch {
	
    String message() default "{password.match}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

    String getFirstField();
    String getSecondField();
}
public class FieldMatchValidator implements ConstraintValidator<FieldMatch, Object> {
	private String firstFieldName;
	private String secondFieldName;

	@Override
	public void initialize(final FieldMatch constraintAnnotation) {
		firstFieldName = constraintAnnotation.getFirstField();
		secondFieldName = constraintAnnotation.getSecondField();
	}

	@Override
	public boolean isValid(final Object value, final ConstraintValidatorContext context) {
		try {
			final Object firstField = BeanUtils.getProperty(value, firstFieldName);
			final Object secondField = BeanUtils.getProperty(value, secondFieldName);

			if ((String.valueOf(firstField).equals(String.valueOf(secondField)) && firstField != null && secondField != null)) {
				return true;
			}
		} catch (final Exception ignore) {
		}
		return false;
	}
}

którego używam w taki sposób:

@FieldMatch(getFirstField = "password", getSecondField = "repeatPassword")

nad definicją encji. password i repeatPassword to nazwy pól do porównania przy validacji. No i generalnie validator działa, nie przepuszcza, ale gdzie jest problem

Domyślna wiadomość, zamiast być wysyłana do widoku jak w przypadku innych validatorów, których adnotacje umieszczone są bezpośrednio nad polami w klasie, jest wysyłana do konsoli, a w widoku jedyne co się dzieje, to brak przejścia dalej...

Ma ktoś jakiś pomysł jak rozwiązać to zagadnienie ?

Pozdrawiam