2013年6月25日火曜日

JSFでDBから取得した日付が一日前になってしまう問題について

JSFのバージョンアップ対応で、なぜかDBから取得した日付情報が一日前になってしまうという不思議な現象が発生。

仕様ですか?と聞いてみると、そんなわけないだろうという回答。
うん、そりゃあそうだ。

そういうわけで早速調査。
でも、ステップ実行して調べてみるも、正しく日付を処理しているように見える。。

なぜだろう・・と思って調べてみたら、タイムゾーンの設定による問題らしい。


対処方法は2通り。
1:コンバータで日付を設定している箇所にすべてタイムゾーンの記載を追加。
(たくさんあるととても大変。。)

なので、今回は
2:Web.xml にタイムゾーンとしてシステムのタイムゾーンを使う一筆を追加。
(こっちは、一か所修正するだけで、すべてに反映可能!)

こっちを採用。
それにしても、どうしてこのパラメータ、デフォルトでオンじゃないのでしょうね。


web.xml

<context-param>
  <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
  <param-value>true</param-value>
</context-param>

0 件のコメント:

コメントを投稿