ValidateのActionMessageを指定したキーで登録する
ActionMessages
SAStrutsではActionクラスでオリジナルの検証をメソッドにして@Executeのvalidate属性にしていします。検証がNGだった場合はActionMessagesにメッセージを詰め込んで、ActionMessagesExceptionをスローします。スローされた、ActonMessagesExceptionはActionMessagesThrowsInterceptorにより、リクエストに登録されます。
そのときの、キーは
String org.apache.struts.Globals.ERROR_KEY = "org.apache.struts.action.ERROR"
になります。
また、メッセージは
String org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE = "org.apache.struts.action.GLOBAL_MESSAGE"
をキーに登録されます。
メッセージの登録キーを指定したい
メッセージの登録キーを指定することで、Validator(アノテーション)で検証した際のメッセージとActionクラスからスローした場合のメッセージを同じキー*1でとれたら、良いんじゃというアドバイスがあったので、ActionMessagesExceptionをちょっと改良してコンストラクタでメッセージのキーを指定できるようにして使うことにしました。*2
jspからは
<html:messages id="error" message="false" property="name"> <span class="error_font">${error}</span> </html:messages>
のような形で表示できます。((ErrorsタグよりもMessagesタグのほうがデザインの自由度があがる))