izu@SAN FRANCISCO RSSフィード

*(4/13/2004以降の)技術ネタは、Blog+WikiソフトのSnipSnapに移動しました
http://izu.shinzui.org
shinzui.orgのサーバはなくなりました…。

Blog移動しました → http://osaka-jin.blogspot.com


2004年02月11日 水曜日

[] 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>

ようは、messageがtrueかfalseでメッセージかエラーかを判断するのです。

トラックバック - http://d.hatena.ne.jp/nadi/20040211/p2