いまだにStrutsか、、というような風潮もあると思うのですが、車内用のWebアプリケーションとして未だに使っているので、その時々に発生する機能追加や修正があります。

いろいろ細々とした覚書をしておきます。

なおここでのStrutsとは、Struts1(Struts1.3.10)を指します。

Strutsには、リクエストに乗せて次のアクションなりページにメッセージを渡すために、ActionMessagesというクラスを使用します。

同じように、フォームの入力検証時のエラーを渡すためのActionErrorsというクラスもあり、使い方もほぼ同じなのですが、ここではActionMessagesについて、覚書をしておきます。

前提条件

次のような、メッセージリソールファイルが有ることを想定しています。

  • プロパティファイル1

  • プロパティファイル2

  • struts-config.xmlファイル

リクエストでメッセージを渡す(GLOBAL_MESSAGE)

使い方はActionクラス等で、ActionMessagesクラスのインスタンスを作成し、そこにActionMessageクラスをaddしていくだけです。
プロパティのActionMessages.GLOBAL_MESSAGEは、Strutsで用意されているメッセージを取り出すための共通プロパティ名です。

addメソッドの第一引数には、プロパティ、第二引数にActionMessageを指定しています。ここでは、ActionMessageにメッセージを取得するためのキー(”message.msg1″等)のみを指定しています。

addされたActionMessagesオブジェクトを、saveMessages(request, messages)でリクエストに保存します。

JSPでのメッセージの取り出し。ActionErrorsと区別するために、message="true"を指定します。

メッセージを任意のプロパティで指定

メッセージをaddするときに、任意のプロパティ名を指定することができます。

jspで取り出すときも、プロパティ名を指定するだけです。ここで、ignore="true"を指定すると、値がなくてもエラーになりません。

メッセージの前後に書式を設定する

メッセージの前後に書式を追加することが出来ます。

メッセージリソースにこのようにプロパティを登録しておくことで、HTML上では、

というふうに出力されます。

メッセージのバンドルを切り替える

複数のメッセージリソースを用意している場合、bundle="key"のようにメッセージリソースのKey値を指定することで、使用するメッセージリソースを切り替えることが出来ませす。
このbundle=..が指定されていない場合は、共通のメッセージリソース(keyが指定されていないリソース)を使用します。

メッセージの存在を確認する

logic:messagesPresetnを使用してメッセージの存在をチェックすることが出来ます。
このときもmessage=trueを指定する必要があります。

直接メッセージを指定する

ActionMessageのコンストラクタの第一引数に、メッセージの文字列を、第二引数にfalseを指定することで、メッセージリソースから取得するのではなく、ここで指定したメッセージの文字列を、直接出力できます。

ActionMessageが存在するかの確認

isEmpty メソッドでメッセージが追加されているかいないかを調べることができます。

size() メソッドでは、追加されているメッセージの数をintで取得できます。

カテゴリー: JavaJava 覚書

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です