There are pros and cons for considering validation as business logic,
and Spring offers a design for validation (and data binding) that
does not exclude either one of them. Specifically validation should not be
tied to the web tier, should be easy to localize and it should be
possible to plug in any validator available. Considering the above, Spring
has come up with a
Validator interface that
is both basic and eminently usable in every layer of an application.
Data binding is useful for allowing user input to be dynamically
bound to the domain model of an application (or whatever objects you use
to process user input). Spring provides the so-called
DataBinder to do exactly that. The
Validator and the
DataBinder make up the
which is primarily used in but not limited to the MVC framework.
BeanWrapper is a fundamental concept in the
Spring Framework and is used in a lot of places. However, you probably
will not have the need to use the
BeanWrapper directly. Because this
is reference documentation however, we felt that some explanation might be
in order. We will explain the
BeanWrapper in this chapter since, if you were
going to use it at all, you would most likely do so when trying to bind data to objects.
Spring's DataBinder and the lower-level BeanWrapper both use PropertyEditors to parse and format property values.
PropertyEditor concept is part of the JavaBeans specification, and is also explained in this chapter.
Spring 3 introduces a "core.convert" package that provides a general type conversion facility, as well as a higher-level "format" package for formatting UI field values.
These new packages may be used as simpler alternatives to PropertyEditors, and will also be discussed in this chapter.