David Newton wrote:Putting messages into an action-specific properties file is only one of several places messages can be store. As detailed in the localization docs you can keep shared messages in a package.properties file anywhere in the classpath, a superclass property file, or an application-wide property file.
The reason validation is being invoked immediately is because you're executing the action. If you example the default "workflow" interceptor configuration you'll see that it skips validation for a small set of action methods, including input(). If you don't want a validation failure to take you to the input page you need to use some mechanism to bypass the validation.
David Newton wrote:You can just return to the page you were on, I suppose. The I18N is handled by the interceptor--if the form tag contains no action it will do a post-back.