I have one registration page which uses custom valiadtor
public class CustomValidator implements Validator {
private Validator validator;
public CustomValidator(Validator validator) {
this.validator = validator;
}
@SuppressWarnings("rawtypes")
public boolean supports(Class clazz) {
return Registration.class.equals(clazz);
}
public void validate(Object target, Errors errors) {
validator.validate(target, errors);
Registration myModel1 = (Registration) target;
if (! myModel1.getConfirm_password().equals(myModel1.getPassword())) {
errors.rejectValue("confirm_password", "confirm_password.confirm");
}
}
}
The problem is that i want to apply it on two forms so i am confused how to write this function with two classes. This function now has only Registration class . what if i also want Person class in it as well
public boolean supports(Class clazz) {
return Registration.class.equals(clazz);
}
Can i write multiple classes in that function
here is my controller
@InitBinder
public void initBinder(final WebDataBinder binder) {
binder.registerCustomEditor(Date.class, null, new CustomDateEditor(new SimpleDateFormat("dd-MM-yyyy"), true));
Validator validator = (Validator) binder.getValidator();
binder.setValidator(new CustomValidator((org.springframework.validation.Validator) validator));
}
It appears you only want to validate 2 classes because you want to duplicate the 'confirm password' validation where you have 2 password fields that should match. Instead, why not simply pass an interface to the validator?
You could do this
Then your validate should do something like this
I don't think you should use this probably it is better to use to separate classes is better for readability, and reduces complexity. To introduce hierarchy in your validators or Model objects (Vistor pattern) is not the best solution.