Resolving Codes to Error Messages
We covered databinding and validation. This section covers outputting messages that correspond
to validation errors. In the example shown in the preceding section,
we rejected the name
and age
fields. If we want to output the error messages by using a
MessageSource
, we can do so using the error code we provide when rejecting the field
('name' and 'age' in this case). When you call (either directly, or indirectly, by using,
for example, the ValidationUtils
class) rejectValue
or one of the other reject
methods
from the Errors
interface, the underlying implementation not only registers the code you
passed in but also registers a number of additional error codes. The MessageCodesResolver
determines which error codes the Errors
interface registers. By default, the
DefaultMessageCodesResolver
is used, which (for example) not only registers a message
with the code you gave but also registers messages that include the field name you passed
to the reject method. So, if you reject a field by using rejectValue("age", "too.darn.old")
,
apart from the too.darn.old
code, Spring also registers too.darn.old.age
and
too.darn.old.age.int
(the first includes the field name and the second includes the type
of the field). This is done as a convenience to aid developers when targeting error messages.
More information on the MessageCodesResolver
and the default strategy can be found
in the javadoc of
MessageCodesResolver
and
DefaultMessageCodesResolver
,
respectively.