Ответ 1
попробуйте добавить это в свой web.xml
<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
Использование jsf 2.2.0.
В течение всей даты, кажется, удаляется один день. Когда я нажимаю на 8 ноября, он отображает 11/08/2011. Но затем он хранит 7 ноября 2011 года в моем поле "Дата" в моем управляемом bean.
Я живу в Сингапуре, задаваясь вопросом, есть ли проблема с часовым поясом.
попробуйте добавить это в свой web.xml
<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
Если вы используете в своем планировщике праймеры 5:
<p:schedule ...ignoreTimezone="false" />
Добавление аргумента -Duser.timezone=UTC
к фиксированной задаче для параметров запуска для меня.
Подводя итог: p: расписание работает только хорошо, когда следующие параметры являются наборами:
-Duser.timezone=UTC
<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
Я только что добавил в web.xml следующий параметр, и проблема исправлена. Я не включал в себя какую-либо команду, например -Duser.timezone = UTC, при запуске сервера, но все же исправил проблему.
javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE правда
Отношения Халиль
Я использую Wildfly 8 и PF 5.0.RC1, и единственное, что сделало трюк для меня, - это установить часовой пояс календаря ни к чему...
<p:calendar timeZone = "" />
Не знаю, подходит ли это правильное решение, оно скорее похоже на обходное решение, но оно отлично работает локально и развертывается.
Возможно, это потому, что вы не вставляли часы. Например, в этом случае
<p:calendar id="dateFromCalendar"
value="#{platform.frameBean.dateFrom}" showOn="button"
pattern="dd-MM-yyyy" timeZone="Europe/Warsaw">
</p:calendar>
час наступит как 00:00 фактического дня. А поскольку часовой пояс (-02: 00), час будет отображаться как 22:00 дня до фактического дня. Правильная вещь -
<p:calendar id="dateFromCalendar"
value="#{platform.frameBean.dateFrom}" showOn="button"
pattern="dd-MM-yyyy HH:mm" timeZone="Europe/Warsaw">
</p:calendar>
Появится час, поэтому часовой пояс сделает правильные вычисления
В своем календарном компоненте добавьте конвертер и укажите свой часовой пояс, например
<p:calendar id="date">
<f:convertDateTime timeZone="Asia/Singapore"></f:convertDateTime>
</p:calendar
Вы пытались установить атрибут timezone
и locate
?
В противном случае вы можете создать объект конвертера, который преобразует дату.
Это учебник по созданию настраиваемого конвертера: http://www.roseindia.net/jsf/customconverter.shtml