1.2からのActionMessagesの使い方
昨日、Struts1.2からは ActionError/ErrorsがDeprecatedになると書きましたが、サンプルコードをちょこっとのせときます。
まず、アクションのクラス:
ActionMessages errors = new ActionMessages();
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("error.doing.something"));
saveErrors(request, errors);
//メッセージの場合は saveMessages(request, errors);
- ActionErrorsがActionMessagesに、ActionErrorがActionMessageに。
- ActionErrors.GLOBAL_ERRORもDeprecatedなので、ActionMessages.GLOBAL_MESSAGESに。
saveMessages(request, errors)の部分についてですが、
- 1.2からはsaveMessages(javax.servlet.http.HttpSession session, ActionMessages messages)と、リクエストにかわってセッションスコープに保存することができるようになりました。セッション内のメッセージは最初に使った後にクリーンアップされます。
- org.apache.struts.action.ActionのsaveErrors (javax.servlet.http.HttpServletRequest request, ActionErrors errors)も同じくDeprecatedになり、1.2からはsaveErrors(javax.servlet.http.HttpServletRequest request, ActionMessages errors)ができて、<html:errors>タグでもリクエストスコープからエラーメッセージを取り出すことができます。(デザイン的なコントロールがきくので、<html:errors/>よりも<html:messages>を使うように推奨しています)
JSPページでは次のようにエラー/メッセージを取り出します。
//エラーをとりだす場合
<logic:messagesPresent message="false">
<html:messages id="error" message="false">
${error} ←ELを使わないなら<bean:write name="error" />
</html:messages>
</logic:messagesPresnet>//メッセージをとりだす場合
<logic:messagesPresent message="true">
<html:messages id="message" message="true">
${message}
</html:messages>
</logic:messagesPresnet>