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 варианта:
Явно указать
timeZone
в каждом<f:convertDateTime>
,<h:xxx ...> <f:convertDateTime ... timeZone="GMT-3" /> </h:xxx>
При необходимости, как свойство объекта, определяемое приложением.
<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>
А потом заменить
<f:convertDateTime>
с этим.<h:xxx ... converter="defaultDateTimeConverter" />