Struts/org.apache.struts.action.ActionMessage(メッセージ処理) で、ActionMessageを用いたメッセージ処理についてまとめましたが、引き続きエラー処理の記述についてまとめます。
Struts1.1.xのころはActionErrorというのを用いていたのですが、1.3系ではメッセージ処理と同じクラスActionMessage系を使うことになっているようです。メッセージ処理の場合はリクエストスコープにActionMessagesを格納するときに、
saveMessages(request, messages);
としていましたが、エラーのメッセージ情報(業務エラーが起きちゃいました、とか)は
saveErrors(request, messages);
を使用します。でJSP側では
<ul> <html:messages id="message" message="false" > <-message属性がfalse <li><bean:write name="message" /></li> </html:messages> </ul>
というようにmessage属性をfalseにするだけです。というよりもデフォルトはfalseなのでsaveMessagesしたときだけmessage属性をtrueにしなさい、というのが正確です。
ActionMessageのセット方法やリソースファイルから取得する方法、IDによるグルーピングなど、基本的にメッセージ処理でできたことは全てエラー処理でもできるようですね。
エラー処理については<html:errors/>というエラー処理専門のタグがあります。基本的には<html:messages/>と同じなのですが、リソースファイルからエラー専用のプロパティを取得して表示を装飾する機能を持っています。これを見てみます。
先で見たサンプルのようにアクションクラスでいくつかActionMessageを作成し、リクエストに入れておきます。
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("メッセージ0",false));
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("msg.message1", "メッセージ1"));
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"msg.message2", new String[] { "メッセージ2の1", "メッセージ2の2" }));
messages.add("HogeGroup", new ActionMessage("別グループのメッセージ", false));
saveErrors(request, messages);
JSP側では、
<html:errors/>
とだけしておきます。さらに、MessageResources.properties には
msg.message1={0}
msg.message2=修飾もできる {0},{1}
# -- standard errors --
errors.header=<ul>
errors.prefix=<li>
errors.suffix=</li>
errors.footer=</ul>
とerrorsで始まるプロパティを設定しておきます。このプロパティは特殊なキー値となっていて、<html:errors/> がiterativeにActionMessageを出力するときにヘッダやフッタ、各メッセージのprefix,suffixと共にhtmlを出力します。
結果的に出力結果は以下の通りです。
<ul> <li>メッセージ0</li> <li>メッセージ1</li> <li>修飾もできる メッセージ2の1,メッセージ2の2</li> <li>別グループのメッセージ</li> </ul>
というように、始めと終わりにheader,footerを出力し、各メッセージの始めと終わりにprefix,suffixを出力しているのが分かると思います。
先のerrors.headerなどのプロパティ値で、別のキーを使いたい場合はerrorsタグで直接キー値を指定します。
<html:errors header="myErrors.header" footer="myErrors.footer" />
などとすると、別のキー値を指定できます。header,footer,suffix,prefix全てあるみたいですね。
この記事は
現在のアクセス:26671