List of usage examples for org.springframework.validation DataBinder getValidator
@Nullable
public Validator getValidator()
From source file:org.agatom.springatom.cmp.wizards.core.AbstractWizardProcessor.java
@SuppressWarnings("UnusedAssignment") private void doValidate(final WizardResult result, final DataBinder binder, String step, final Map<String, Object> formData, final Locale locale) throws Exception { final Object target = binder.getTarget(); if (!StringUtils.hasText(step)) { // Wizard submission, because step is null step = this.stepHelperDelegate.getLastStep(); if (!this.stepHelperDelegate.isValidationEnabled(step)) { // reset the step again step = null;/*w w w.j a va2s.c om*/ } } try { final BindingResult bindingResult = binder.getBindingResult(); boolean alreadyValidate = false; if (this.localValidator != null) { if (LOGGER.isDebugEnabled()) { LOGGER.debug(String.format("Validating via Validator instance=%s", this.localValidator)); } this.validationService.validate(this.localValidator, bindingResult, result); alreadyValidate = true; } if (!alreadyValidate) { final ValidationBean bean = new ValidationBean(); bean.setPartialResult(result); bean.setStepId(step); bean.setCommandBean(bindingResult.getTarget()); bean.setCommandBeanName(this.getContextObjectName()); bean.setFormData(formData); bean.setBindingModel(formData); if (this.validationService.canValidate(bean)) { if (LOGGER.isDebugEnabled()) { LOGGER.debug( String.format("Validating via validation service for validationBean=%s", bean)); } this.validationService.validate(bean); alreadyValidate = true; } } /* Will validate only if not yet validated it is not step submission and wizard is allowed to validate * This a last opportunity to validate however unlike validation via * - localValidator * - validationService * this validation will be run only if * - not yet validated * - current (or last) step has validation flag set * - entire wizard has validation flag set */ if (!alreadyValidate && this.isValidationEnabledForStep(step) && this.isValidationEnabled()) { LOGGER.debug(String.format( "Not yet validated (tried localValidator and via validationService), assuming that is wizard submission due to step===null, validating through binder")); final Validator validator = binder.getValidator(); if (validator != null) { final long startTime = System.nanoTime(); validator.validate(target, bindingResult); final long endTime = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime); result.addDebugData(WizardDebugDataKeys.VALIDATION_TIME, endTime); result.addDebugData(WizardDebugDataKeys.VALIDATOR, ClassUtils.getShortName(validator.getClass())); } } if (LOGGER.isDebugEnabled()) { final Set<Message> messages = result.getValidationMessages(); final short count = (short) (messages == null ? 0 : messages.size()); LOGGER.debug(String.format("Validation completed, found %d validation errors", count)); } } catch (Exception exp) { // Catch any validation exception and add it as an error LOGGER.error("Validation failed either via [localValidator,validationService,binder#validator", exp); result.addError(exp); result.addFeedbackMessage(FeedbackMessage.newError() .setTitle(this.messageSource.getMessage("sa.wiz.validationError.title", locale)) .setMessage(this.messageSource.getMessage("sa.wiz.validationError.msg", new Object[] { target.toString() }, locale))); } }