org.springframework.validation
Class DefaultMessageCodesResolver

java.lang.Object
  extended by org.springframework.validation.DefaultMessageCodesResolver
All Implemented Interfaces:
java.io.Serializable, MessageCodesResolver

public class DefaultMessageCodesResolver
extends java.lang.Object
implements MessageCodesResolver, java.io.Serializable

Default implementation of the MessageCodesResolver interface.

Will create two message codes for an object error, in the following order:

Will create four message codes for a field specification, in the following order:

For example, in case of code "typeMismatch", object name "user", field "age":

This resolution algorithm thus can be leveraged for example to show specific messages for binding errors like "required" and "typeMismatch":

In case of array, List or Map properties, both codes for specific elements and for the whole collection are generated. Assuming a field "name" of an array "groups" in object "user":

In order to group all codes into a specific category within your resource bundles, e.g. "validation.typeMismatch.name" instead of the default "typeMismatch.name", consider specifying a prefix to be applied.

Since:
1.0.1
Author:
Juergen Hoeller
See Also:
Serialized Form

Field Summary
static java.lang.String CODE_SEPARATOR
          The separator that this implementation uses when resolving message codes.
private  java.lang.String prefix
           
 
Constructor Summary
DefaultMessageCodesResolver()
           
 
Method Summary
protected  void buildFieldList(java.lang.String field, java.util.List<java.lang.String> fieldList)
          Add both keyed and non-keyed entries for the supplied field to the supplied field list.
protected  java.lang.String getPrefix()
          Return the prefix to be applied to any code built by this resolver.
protected  java.lang.String postProcessMessageCode(java.lang.String code)
          Post-process the given message code, built by this resolver.
 java.lang.String[] resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName)
          Build message codes for the given error code and object name.
 java.lang.String[] resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName, java.lang.String field, java.lang.Class<?> fieldType)
          Build the code list for the given code and field: an object/field-specific code, a field-specific code, a plain error code.
 void setPrefix(java.lang.String prefix)
          Specify a prefix to be applied to any code built by this resolver.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CODE_SEPARATOR

public static final java.lang.String CODE_SEPARATOR
The separator that this implementation uses when resolving message codes.

See Also:
Constant Field Values

prefix

private java.lang.String prefix
Constructor Detail

DefaultMessageCodesResolver

public DefaultMessageCodesResolver()
Method Detail

setPrefix

public void setPrefix(java.lang.String prefix)
Specify a prefix to be applied to any code built by this resolver.

Default is none. Specify, for example, "validation." to get error codes like "validation.typeMismatch.name".


getPrefix

protected java.lang.String getPrefix()
Return the prefix to be applied to any code built by this resolver.

Returns an empty String in case of no prefix.


resolveMessageCodes

public java.lang.String[] resolveMessageCodes(java.lang.String errorCode,
                                              java.lang.String objectName)
Description copied from interface: MessageCodesResolver
Build message codes for the given error code and object name. Used for building the codes list of an ObjectError.

Specified by:
resolveMessageCodes in interface MessageCodesResolver
Parameters:
errorCode - the error code used for rejecting the object
objectName - the name of the object
Returns:
the message codes to use

resolveMessageCodes

public java.lang.String[] resolveMessageCodes(java.lang.String errorCode,
                                              java.lang.String objectName,
                                              java.lang.String field,
                                              java.lang.Class<?> fieldType)
Build the code list for the given code and field: an object/field-specific code, a field-specific code, a plain error code.

Arrays, Lists and Maps are resolved both for specific elements and the whole collection.

See the class level Javadoc for details on the generated codes.

Specified by:
resolveMessageCodes in interface MessageCodesResolver
Parameters:
errorCode - the error code used for rejecting the value
objectName - the name of the object
field - the field name
fieldType - the field type (may be null if not determinable)
Returns:
the list of codes

buildFieldList

protected void buildFieldList(java.lang.String field,
                              java.util.List<java.lang.String> fieldList)
Add both keyed and non-keyed entries for the supplied field to the supplied field list.


postProcessMessageCode

protected java.lang.String postProcessMessageCode(java.lang.String code)
Post-process the given message code, built by this resolver.

The default implementation applies the specified prefix, if any.

Parameters:
code - the message code as built by this resolver
Returns:
the final message code to be returned
See Also:
setPrefix(java.lang.String)