- PR -

ActionMessageからのメッセージ取得

1
投稿者投稿内容
sMoker
会議室デビュー日: 2007/07/23
投稿数: 4
投稿日時: 2009-02-05 11:12
お世話になります。

現在、下記のようなソースにてActionMessageよりプロパティファイルの内容を取得しようとしているのですがプロパティのキーは取得できるのですが値が取得できません。
調査方法を含めましてご存知の方がいらっしゃれば教えていただけますでしょうか。

---メッセージセット-----
ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("KEY1"));
saveErrors(request, messages);
return mapping.findForward("input");


---エラー出力側-----
ActionMessages messages = getErrors(request);
for (@SuppressWarnings("unchecked")Iterator<String> propIter = (Iterator<String>) messages.properties(); propIter.hasNext();) {
String property = propIter.next();
for (@SuppressWarnings("unchecked")
Iterator<ActionMessage> msgIter = messages.get(property); msgIter.hasNext();) {
ActionMessage msg = msgIter.next();
logger.warn(msg);
}
}
return mapping.findForward("success");

上記ロジックにて出力されるのは下記のようになります。

---ログ内容-----
[XXX] WARN (Output4log.java:XX) - KEY1[]


ごぞんじの方がいらっしゃいましたらよろしくお願いいたします。

[ メッセージ編集済み 編集者: sMoker 編集日時 2009-02-05 11:15 ]
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-02-05 11:36
2行目
メッセージのキーはセットしていますが
メッセージ自体をセットしていないですね。

sMoker
会議室デビュー日: 2007/07/23
投稿数: 4
投稿日時: 2009-02-05 12:14
あすかさん

返信ありがとうございます。

メッセージ自体はプロパティファイルに記載しています。

---プロパティファイル-----
KEY1=ErrorMessage

<html:messages> のように出力したいのです。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2009-02-05 14:13
ActionMessageが持つのはメッセージのキーとパラメータ配列だけです。
ResourceBundle#getString()とMessageFormat#format()が必要です。

具体的に何をすればよいかは<html:messages>のソースを見て調べましょう。
sMoker
会議室デビュー日: 2007/07/23
投稿数: 4
投稿日時: 2009-02-05 17:24
あしゅさん

ご返信ありがとうございます。
下記の件、いろいろと調べた結果下記の様にすることにより解決しました。

エラー出力側にてMessageResourcesを利用して

ActionMessages messages = getErrors(request);
MessageResources MsgResouce = this.getResources(request);

for (@SuppressWarnings("unchecked")
Iterator<String> propIter = (Iterator<String>) messages.properties(); propIter.hasNext();) {
 String property = propIter.next();
 for (@SuppressWarnings("unchecked") Iterator<ActionMessage> msgIter = messages.get(property); msgIter.hasNext();) {
  ActionMessage msg = msgIter.next();
  logger.warn(MsgResouce.getMessage(msg.getKey()));
 }
}

という感じです。

ありがとうございました。

_________________
1

スキルアップ/キャリアアップ(JOB@IT)