Validation error message that allows for supplying the error message at the time of creation - i.e. not through a resource bundle or other external mechanism. SimpleError will still attempt to lookup the field name in the field name bundle, but as with other errors, it will fall back to a prettified version of the field name that is used in the input tag.
Messages may contain one or more "replacement parameters". Two replacement parameters are provided by default, they are the field name and field value, and are indices 0 and 1 respectively. To use replacement parameters a message must contain the replacement token {#} where # is the numeric index of the replacement parameter.
For example, to construct an error message with one additional replacement parameter which is the action the user was trying to perform, you might supply a message like:
{1} is not a valid {0} when trying to {2}
At runtime this might get replaced out to result in an error message for the user that looks like "Fixed is not a valid status when trying to create a new bug".
One last point of interest is where the user friendly field name comes from. Firstly an attempt is made to look up the localized name in the applicable resource bundle using the String beanClassFQN.fieldName where beanClassFQN is the fully qualified name of the bean class, and fieldName is the name of the field on the form. The second attempt is made with String actionPath.fieldName where actionPath is the action of the form in the JSP (or equally, the path given in the @UrlBinding annotation in the ActionBean class). Finally, the last attempt uses fieldName by itself.
@see java.text.MessageFormat