Back Forum Reply New

Using bean annotations from spring-modules-validation with spring rich

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
¥
Back Forum Reply New