前回(Strutsメッセージのまとめ-(2))からの続きです。
- JSPでの通常のリソース文言(国際化対応など)…まとめ(1)
- Actionから通知される通常メッセージ…まとめ(2)
- Actionから通知されるエラーメッセージ…まとめ(3)←今回
- validateでのエラーメッセージ…まとめ(4)
- validatorでのエラーメッセージ…まとめ(5)
3.Actionから通知されるエラーメッセージ
ActionMessagesと、ActionMessageを使う点は、2.の通常メッセージと同じです。
以前からStrutsを使っていた人は、ActionErrorsとActionErrorを使っていたと思うのですが、これはStruts1.2からは使われなくなりました。
ActionErrorsは、validateメソッド(次回説明)での戻り値として、まだ利用するのですが、ActionErrorは、非推奨になっています。
「Actionから通知されるエラーメッセージ」は、validateメソッドや、validatorで使われる妥当性検証とは、ちょっと違います。
妥当性検証は、入力データとして妥当かどうかの簡単なチェックしか行いません。
その代わり、データベースなどを使用せずに、JavaScriptでチェックしたり素早い確認が可能です。
一方、「Actionから通知されるエラーメッセージ」は、妥当性検証をパスしたが、業務ルール的にエラーになったりした場合です。
データベース上での整合性や、他のシステムと連携して入力チェックをしたり、入力は問題ないが、システム上の問題で、エラーが発生したりする場合に使用されます。
器を用意します。
ActionMessages messages = new ActionMessages();
以前のStrutsは、ActionErrorsを使っていましたが、非推奨になったので使いません。
この器にメッセージオブジェクトを追加します。
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("msg3.error1"));
※1つ目のパラメータは、ActionErros.GLOBAL_ERROR(非推奨)ではないので注意してください。
最後にエラーメッセージとして保存します。
saveErrors(request, messages);
これでAction側の処理はおしまいです。
通常メッセージとほとんど同じで、最後が、saveErrorsで保存する点だけが違います。
以前のStrutsと比べ、通常メッセージとエラーメッセージが統一された操作になっています。
JSPは、実は以前のStruts(1.1以前)の方式が、まだ使えるため統一感のない複数の方法があります。
まずは最も標準的な方法。
通常メッセージと同じように、
タグを使用します。
使い方は通常メッセージと同じなのですが、message属性はfalseにしなければなりません。
省略するとfalseなので、省略してもOKです。
true→通常メッセージの出力
false→エラーメッセージの出力
従来方式の書き方では、
を使います。
は、iterateする機能だけを提供し、中身を自分で記述しました。
一方、
は、中身はかけなくて勝手に全メッセージを展開します。(ややこしい!)
そうなると、前述の
のように、
メッセージごとに
で囲んだりできないのでは?
と思うのですが、それはprefix,suffixという指定を利用します。
リソースファイルにはこのように記述しています。
errors.header=
-
errors.prefix=
- errors.suffix=
errors.footer=
こうすると、例えばエラーが3つあった場合に、
- ...header
- エラー1
- エラー2
- エラー2
...prefix【内容】suffix
...footer
というように出力します。
リソースにおける、errors.header, errors.prefix, errors.suffix, errors.footerの4つは、特別なリソースキーになります。
タグのheader属性で別のリソースのキーを指定すれば、
その箇所だけ別のheaderを指定することもできます。(footer,prefix,suffixも同様)
エラーメッセージは、古い方式と新しい方式が混在しているので注意が必要です。
サンプルプログラムはStrutsMsg-3.zipです。
次回は、validateでのエラーメッセージについてです。