携帯サイトに Struts 2.1.8 を適用したら文字が見えない!

 

Struts 2.1.6 で作った携帯サイトに Struts 2.1.8 を適用してみたところ、 <s:property />で出力する文字がすべて見えない状態になっていました。
なお、pageEncoding は UTF-8 で、contentType は Windows-31J で出力しています。

調べてみると、Struts 2.1.7 から <s:property />の実装が変わって、出力される文字が 10進数実体参照にエスケープするよう変わったようです。
確かにmavenのリポジトリを見ると com.opensymphony.xwork2.util.TextUtils から、
org.apache.commons.lang.xwork.StringEscapeUtils に変わってました。
どうも <s:property /> だけじゃなくて、 <s:submit /> もダメそう。
一体何てことしてくれるんだ !!

package.properties を作成して

format.string={0}

として、JSP側で以下のように指定したら正しく出力されました。

<s:text name="format.string"><s:param name="value" value="プロパティ名" /></s:text>

でも既存のJSPの全項目に対して上記を実施するのは現実的ではないですね。
そのうち <s:text /> にも変換がかかるようになったりして・・・。
<s:property />のプロパティに escape="false" としても正しく出力されますが、それはXSS対策なんかを考えるとNGです。
これじゃバージョンが上げられません。
ひどいな~ せめてデフォルトは今のままで出力してほしいです :-(