ConvertDateTime没有在web.xml中定义时区

问题描述 投票:2回答:1

我正在使用f:convertDateTime来格式化数据表中的dateTime。我在web.xml中设置了以下上下文参数,以显式将时区设置为系统时区:

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

由于某种原因,我的convertDateTime始终获得“GMT”,但正确的时区是“GMT-03:00”。我在测试类中尝试了这个以查看我的时区:

System.out.println(TimeZone.getDefault().getDisplayName());

这给了我“GMT-03:00”。

我正在使用JSF 1.2和JBoss Seam 2.2,调用jboss-seam DateTimeConverter来进行这种转换,我不知道这是不是问题。

jsf jsf-1.2 jboss-seam
1个回答
3
投票

我正在使用JSF 1.2

提到的上下文参数在JSF 2.0中引入。它在JSF 1.x中不可用。另见a.o. Set a default time zone for f:convertDateTime。换句话说,它根本就没用过。将其取下以避免混淆。

你有两个选择:

  1. 在每个timeZone中明确指定<f:convertDateTime><h:xxx ...> <f:convertDateTime ... timeZone="GMT-3" /> </h:xxx> 必要时作为应用程序作用域bean属性。 <h:xxx ...> <f:convertDateTime ... timeZone="#{config.timeZone}" /> </h:xxx>
  2. 使用新的默认时区(和其他属性)扩展日期时间转换器。 public class DefaultDateTimeConverter extends DateTimeConverter { public DefaultDateTimeConverter() { setType("both"); setTimeZone(TimeZone.getTimeZone("GMT-3")); } } <converter> <converter-id>defaultDateTimeConverter</converter-id> <converter-class>com.example.DefaultDateTimeConverter</converter-class> </converter> 然后用它替换<f:convertDateTime><h:xxx ... converter="defaultDateTimeConverter" />
© www.soinside.com 2019 - 2024. All rights reserved.