1

编辑:JSF 实施:Mojorra 2.1.9

我的 Web 应用程序行为异常。当我在服务器机器上部署我的应用程序时,它会显示委内瑞拉标准时间的时间。像这样 Sun Aug 05 11:46:26 VET 2012

问题是我不在委内瑞拉。我检查了服务器机器上的时区配置,它是正确的。当我在本地机器上运行该应用程序时,完全没有问题,时间是正确的。但是部署的时候是错误的。

我将下面的上下文参数放入 web.xml,但它无济于事。什么问题我不知道

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

2 回答 2

1

JSF 日期时间转换器默认使用 UTC。仅当您设置该上下文参数时,它才会默认为系统时区(底层服务器平台的时区)。显然,有问题的服务器默认配置为委内瑞拉时区(可能是因为它托管在委内瑞拉并由不知道自己在做什么的服务器管理员维护?)。

删除该上下文参数应该可以解决您的具体问题,假设您没有覆盖 JSF 默认日期时间转换器或其设置,例如自定义转换器或设置timeZone属性<f:convertDateTime>

如果这不能以某种方式解决您的问题,请尝试升级 JSF 实现(但是我不记得在 Mojarra 中与此相关的任何错误,所以我认为如果您使用 Mojarra,升级不会解决它;我我不确定 MyFaces),或者尝试显式设置页面中每个标签的timeZone属性。<f:convertDateTime>

于 2012-08-05T16:25:24.487 回答
0

我用“-Duser.timezone=Europe/Istanbul”参数启动了tomcat,现在时间到了。不明白为什么默认时间是委内瑞拉时间,但这为我解决了问题。将进一步研究以了解导致此问题的原因。

于 2012-08-05T20:19:33.410 回答