org.springframework.validation

## Interface SmartValidator

- All Superinterfaces:
    Validator
  All Known Implementing Classes:
    CustomValidatorBean, LocalValidatorFactoryBean, OptionalValidatorFactoryBean, SpringValidatorAdapter

      public interface SmartValidator
      extends Validator

  Extended variant of the `Validator` interface, adding support for validation 'hints'.
  Since:
    3.1
  Author:
    Juergen Hoeller, Sam Brannen

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `validate(Object target, Errors errors, Object... validationHints)` Validate the supplied `target` object, which must be of a type of `Class` for which the `Validator.supports(Class)` method typically returns `true`.
    `default void` | `validateValue(Class<?> targetType, String fieldName, Object value, Errors errors, Object... validationHints)` Validate the supplied value for the specified field on the target type, reporting the same validation errors as if the value would be bound to the field on an instance of the target class.

    - ### Methods inherited from interface org.springframework.validation.Validator

      `supports, validate`

- - ### Method Detail

    - #### validate

          void validate(Object target,
                        Errors errors,
                        Object... validationHints)

      Validate the supplied `target` object, which must be of a type of `Class` for which the `Validator.supports(Class)` method typically returns `true`.

      The supplied `errors` instance can be used to report any resulting validation errors.

      This variant of `validate()` supports validation hints, such as validation groups against a JSR-303 provider (in which case, the provided hint objects need to be annotation arguments of type `Class`).

      Note: Validation hints may get ignored by the actual target `Validator`, in which case this method should behave just like its regular `Validator.validate(Object, Errors)` sibling.

      Parameters:
        `target` - the object that is to be validated
        `errors` - contextual state about the validation process
        `validationHints` - one or more hint objects to be passed to the validation engine
      See Also:
        `Validator.validate(Object, Class[])`

    - #### validateValue

          default void validateValue(Class<?> targetType,
                                     String fieldName,
                                     @Nullable
                                     Object value,
                                     Errors errors,
                                     Object... validationHints)

      Validate the supplied value for the specified field on the target type, reporting the same validation errors as if the value would be bound to the field on an instance of the target class.
      Parameters:
        `targetType` - the target type
        `fieldName` - the name of the field
        `value` - the candidate value
        `errors` - contextual state about the validation process
        `validationHints` - one or more hint objects to be passed to the validation engine
      Since:
        5.1
      See Also:
        `Validator.validateValue(Class, String, Object, Class[])`