I did not find any examples on how to do this, so now that I have it working I thought it share.
Its a little manual, and could possible be done a better way, but in the meantime it works fine.
Basically I wrote a SpringRCPvalidator2SpringValidator class which you set against your form model with
protected AnnotationBeanValidatorConverter validator;
... validatingFormModel.setValidator(validator);
And the converter:
public class AnnotationBeanValidatorConverter implements Validator { private BeanValidator beanValidator; private MessageSource messageSource = null;
private Validator originalValidator = null; private ValidatingFormModel validatingFormModel;
public AnnotationBeanValidatorConverter() { messageSource = (MessageSource) ApplicationServicesLocator.services().getService(M essageSource.class); }
public ValidationResults validate(Object object) { DefaultValidationResults results = new DefaultValidationResults(); Errors errors = new BindException(object, object.getClass().getSimpleName());
beanValidator.validate(object, errors);
if (originalValidator != null) { ValidationResults chainedResults = originalValidator.validate(object); results.addAllMessages(chainedResults); }
for (Object o : errors.getAllErrors()) { if (o instanceof FieldError) { FieldError fieldError = (FieldError) o; String error = (messageSource == null) ? fieldError.getField() : messageSource.getMessage(fieldError.getCode(), null, fieldError.getCode(), Locale.getDefault()); results.addMessage(error, Severity.ERROR, error); } }
return results; }
public void setBeanValidator(BeanValidator beanValidator) { this.beanValidator = beanValidator; }
public void setOriginalValidator(Validator originalValidator) { this.originalValidator = originalValidator; }
public void setValidatingFormModel(ValidatingFormModel validatingFormModel) {
this.validatingFormModel = validatingFormModel; }
}
It can also call the original validation that was on the formModel if needed.
Hope this is useful |