primefaces calendar: wrong date entry

≡放荡痞女 提交于 2020-01-01 02:25:08

问题


Using jsf 2.2.0.

For all the date, it seems to remove one day. When I click on 8 nov, it displays 11/08/2011. But then it stores Nov 7, 2011 in my Date field in my managed bean.

I live in singapore, wondering if it's an issue with the timezone.


回答1:


try adding this to your web.xml

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



回答2:


If you are using primefaces 5, in your scheduler :

<p:schedule ...ignoreTimezone="false" />



回答3:


Adding the argument -Duser.timezone=UTC to the startup parameters fixed problem for me.

To summarize: p:schedule work only well when following parameters are sets:

-Duser.timezone=UTC

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



回答4:


I have just added the following parameter in web.xml and the issue is fixed. I didn't include any command like -Duser.timezone=UTC while starting the server, still its fixed the issue.

javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE true

Regards Khaleel




回答5:


I'm using Wildfly 8 and PF 5.0.RC1 and the only thing that did the trick for me was setting the Timezone of the calendar to nothing...

<p:calendar timeZone = "" />

Don't know if this is a proper solution, seems more like a workaround, but it worked fine locally and deployed.




回答6:


Maybe it is because you didn't insert the hours. For example in this case

<p:calendar id="dateFromCalendar"
    value="#{platform.frameBean.dateFrom}" showOn="button"
    pattern="dd-MM-yyyy" timeZone="Europe/Warsaw">
</p:calendar>

the hour will come as 00:00 of the actual day. And because the timezone (-02:00), the hour will appear as 22:00 of the day before the actual day. The correct thing to do is

<p:calendar id="dateFromCalendar"
    value="#{platform.frameBean.dateFrom}" showOn="button"
    pattern="dd-MM-yyyy HH:mm" timeZone="Europe/Warsaw">
</p:calendar>

The hour will appear, so the timezone will make the correct calculations




回答7:


In your calendar component, add a converter and indicate your timezone e.g

<p:calendar id="date">
  <f:convertDateTime timeZone="Asia/Singapore"></f:convertDateTime>
</p:calendar



回答8:


Have you tried to set the timezone and locate attribute? Otherwise, you can create a converter object that converts the date. This is a tutorial to create a custom converter: http://www.roseindia.net/jsf/customconverter.shtml



来源:https://stackoverflow.com/questions/8025116/primefaces-calendar-wrong-date-entry

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!