2008/08/08

JSTLのfmtタグの不思議 [ Java, JSTL ]

うっへー。滅茶苦茶あいだが空いてしまいました。
プロジェクトいそがしめとはいえわれながらものぐさです。
maitoさんを見習いたいですね。勿論性的な意味で。

さて、今日は題名のJSTLのfmtタグについて。
fmtタグはフォーマットタグ(そのまんま)でして、数字や
日付等のフォーマットをしてレンダリングしてくれるのですが……
現プロジェクトで問題が発生しました。具体的には

<fmt:formatdate value="${[日付の値]}" pattern="yyyy/MM/dd" />

このように使うのですが、なぜかこれがDoCoMo端末だけ動かない。
動かないというか表記が

Tue Jul 15 18:03:41 GMT+09:00 2008

こんな感じになりやがります。なぜDoCoMoだけ?!
で、色々調べてみた所どうやらロケール情報が正しく設定されていないと
ダメらしい。通常はロケール情報はリクエストのヘッダにあるのでこれを
見に行っているようなのですが、携帯等の場合でこれがないと……
今回のようになるようです。

で、対応策。同じくfmtタグのsetLocaleタグを使って明示的に
ロケールをセッティングします。


<fmt:setlocale value="ja-JP" />

こんな感じです。ただベタ書きでja-JPって書くのは怖いんでここは
よきに計らってくださいといった感じ。

しかし携帯って怖いですわーこりゃ・・・。