本来没有打算写这篇文章的,但是两个月里两次遇到这个问题,因此觉得有必要写下来分享给大家。
在JSF1.2中使用rich:datatable组件,在rich:column中如果要显示日期和时间的话,如果服务器不在本地,你可能会发现日期和时间有点偏差。
代码如下:
我在7月份的时候实验室服务器放在芬兰,开发以后测试人员发现日期和时间相差近5个小时,9月份的时候实验室放在印度,测试人员报告时间相差两个多小时,我测试应该是时区不对。将日期以长格式显示以后果然发现默认使用的是GMT时区,而我们期望使用系统的默认时区,因此我们可能会想到解决办法如下,在rich:column中使用日期转换器,加上时区信息,代码如下:
不过测试后你会很失望的发现问题依然没 有解决,把下面这段代码
放在rich:column外面是没有问题的,但是在rich:column里就是不起作用,使用普通的html td,tr标签也是不起作用。
于是我觉得可能是f:convertDateTime组件不能嵌套过多,否则不起作用,没有办法最终只好自己写自定义的日期转换器如下:
首先,写一个自定义的日期转换器类如下:
其次,在JSF的faces-config.xml配置文件中配置该自定义的转换器,如下:
现在,重启服务器,你会惊喜地发现,时区信息配置起作用了。