ConvertDateTime не получает правильный часовой пояс

Я использую 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>

B

но по какой-то причине мой convertDateTime всегда получает: "GMT", но правильный часовой пояс - "GMT-03:00". Я попробовал это в тестовом классе, чтобы увидеть мой часовой пояс:

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

И отображается "GMT-03:00".

Я использую JSF 1.2 и Jboss Seam 2.2, для этого преобразования вызывается jboss-seam DateTimeConverter, я не знаю, в чем проблема

1 ответ

Решение

Я использую JSF 1.2

Упомянутый контекстный параметр введен в JSF 2.0. Это не доступно в JSF 1.x. Смотрите также ao Установите часовой пояс по умолчанию для f: convertDateTime. Другими словами, он просто никогда не используется. Удалите его, чтобы избежать путаницы.

У вас есть 2 варианта:

  1. Явно указать timeZone в каждом <f:convertDateTime>,

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

    При необходимости, как свойство объекта, определяемое приложением.

    <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" />
    
Другие вопросы по тегам