使用jsf 2.2.0。primefaces日历:错误日期条目
对于所有的日期,它似乎删除了一天。当我点击8 nov时,它显示11/08/2011。 但它然后在我的托管bean中的日期字段中存储2011年11月7日。
我住在新加坡,想知道这是否与时区有关。
使用jsf 2.2.0。primefaces日历:错误日期条目
对于所有的日期,它似乎删除了一天。当我点击8 nov时,它显示11/08/2011。 但它然后在我的托管bean中的日期字段中存储2011年11月7日。
我住在新加坡,想知道这是否与时区有关。
您是否尝试过设置timezone
和locate
属性? 否则,您可以创建一个转换对象来转换日期。 这是一个教程创建一个自定义转换器:http://www.roseindia.net/jsf/customconverter.shtml
尝试添加该到你的web.xml
<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>
它绝对是一个时区问题。您可能(应该)以UTC运行您的服务器。 Primefaces将区分您的日期并将其转换为用户时间。您可以并可能应该使用 “-Duser.timezone = UTC”运行服务器。上下文参数应该修复它。 –
确认,时区问题。上下文参数修复了它(JSF 2.2.5,PrimeFaces 4.0)。 – Gilberto
添加参数-Duser.timezone=UTC
为我固定的问题启动参数。
总结: 号码:工作时间表以及仅当下面的参数设置:
-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 真正
问候 Khaleel
我使用Wildfly 8和PF 5.0.RC1并为我做的是设置时区的招的唯一的事日历不了了之......
<p:calendar timeZone = "" />
不知道这是一个妥善的解决办法,似乎更像是一个解决办法,但它在本地运行良好并已部署。
如果使用primefaces 5,在你的调度:
<p:schedule ...ignoreTimezone="false" />
也许是因为你没有插入小时。例如在这种情况下,
<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
莫非是。否则,它可能是Primefaces的问题。这是相当麻烦的...不管怎样,不要使用'Date'-s,而是使用'Calendar'-s。 – zeller
日期字段甚至无法存储特定的日期。它存储的是一个整数。将整数转换为日期的方式有多种,这是您的问题来自何处。 – MatsT
@zeller我对你的建议不使用java.util.Date感兴趣。为什么是这样? – 8bitjunkie