Jsf ConvertDateTime未在web.xml中定义时区

Jsf ConvertDateTime未在web.xml中定义时区,jsf,jsf-1.2,jboss-seam,Jsf,Jsf 1.2,Jboss Seam,我使用f:convertDateTime来格式化数据表中的日期时间。我在web.xml中设置了以下上下文参数,以显式地将时区设置为系统时区: <context-param> <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name> <param-value>true</param-value> &l

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

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>
这给了我“GMT-03:00”

我使用的是JSF1.2和JBoss Seam 2.2,调用JBoss Seam DateTimeConverter进行转换,我不知道这是否是问题所在

我正在使用JSF1.2

提到的上下文参数是在JSF2.0中引入的。它在JSF1.x中不可用。另见a.o。换句话说,它只是从未被使用过。将其移除以避免混淆

您有两种选择:

  • 在每个
    中明确指定
    时区

    <h:xxx ...>
        <f:convertDateTime ... timeZone="GMT-3" />
    </h:xxx>
    

    
    defaultDateTimeConverter
    com.example.DefaultDateTimeConverter
    
    然后用它替换

    <h:xxx ... converter="defaultDateTimeConverter" />
    
    
    

  • 奇怪,因为我有一个JSF2.2项目,我只使用convertDateTime direct,没有这个“hacks”。我已经明白了。上下文参数只在JSF2.0中起作用。谢谢你,巴卢斯克
    <h:xxx ...>
        <f:convertDateTime ... timeZone="#{config.timeZone}" />
    </h:xxx>
    
    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>
    
    <h:xxx ... converter="defaultDateTimeConverter" />