トップ «前の日記(2009-08-20) 最新 次の日記(2009-08-22)» 編集

日々の破片

著作一覧

2009-08-21

_ Struts 1.2(3かも)のActionMessage

エラーメッセージをActionMessageに入れて処理したい。

この時、エラーメッセージはリソース(プロパティファイル)に入れておきたい。

で、そのメッセージが「かっこは[]{}()が使えます」だとする。

当然、プロパティファイルには、message.kakko=かっこは[]{}()が使えます とか書いて、それをnative2asciiしておく。

これが例外となる。

MessageFormatが、{}に数字がないのはIllegalArgumentだと言うからだ。それは正しい。

そこで、「かっこは[]'{}'()が使えます」と、クォートする。こないだ覚えたから問題なし。

しかしうまくいかない。同じく例外となる。どうもStrutsが消費しているような気がする(つい調べてしまったらMessageResourcesのescapeメソッドで''を作っているからだ。プロパティファイルをMessageFormat透過にしようとしているのだと思う)。たとえば、「笑顔の値段は\2です。」としたのが「笑顔の値段は2です。」となったりするので、「笑顔の値段は\\2です。」とする必要があるのと同じく何かをStrutsがやっているからだろう。

そこで、「かっこは[]{0}()が使えます」として、"{}"を与えることを考える。

これは多分うまくいくと思う。しかしねぇ、ActionMessageを作る処理の中で、常に"{}"を引数として与えるというのも妙だ。かといって、文字列の中に{0}が存在したら"{}"を与えるというのも気に食わない。

そこで、常に new ActionMessage(msgresource.getMessage(key).replace("curlykakkokokka", "{}"), false)としてみる。プロパティの中で{}の代わりにcurlykakkokokkaを書くことにするわけだ。

と、書いてみるとこれで良さそうだが(なぜそうしなかったのか覚えていないが)、最終的にはActionMessageを継承してgetKeyの時点で上記を実行するようにして逃げた。

しかし、MessageResources#setEscapeをあらかじめfalseを引数にして呼んでいれば良かったことに気づいてしまった。というか、今、MessageResourcesを読んで気づいた。明日、修正しよう。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え