2011-11-06 19 views
11

Uso de jsf 2.2.0.calendario de primos: entrada de fecha incorrecta

Para toda la fecha, parece eliminar un día. Cuando hago clic en 8 nov, se muestra 11/08/2011. Pero luego se almacena el 7 de noviembre de 2011 en mi campo Fecha en mi bean administrado.

Vivo en Singapur, preguntándome si se trata de un problema con la zona horaria.

+1

Podría ser. Si no, puede ser un problema de Primefaces. Es bastante defectuoso ... De todos modos, no use 'Date'-s, use' Calendar'-s en su lugar. – zeller

+0

Un campo de fecha ni siquiera puede almacenar una fecha específica. Todo lo que almacena es un número entero. Hay diferentes formas de pasar ese entero a una fecha, que es de donde proviene su problema. – MatsT

+0

@zeller Me interesa su recomendación de no utilizar java.util.Date. ¿Por qué es esto? – 8bitjunkie

Respuesta

23

intento de añadir esto a su web.xml

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

Definitivamente es un problema de zona horaria. Puede (debería) ejecutar su servidor en UTC. Primefaces regionalizará su fecha y la convertirá a la hora del usuario. Puede, y probablemente debería, ejecutar su servidor con "-Duser.timezone = UTC". El parámetro de contexto debería arreglarlo. –

+0

Confirmado, problema de zona horaria. El parámetro de contexto lo arregló (JSF 2.2.5, PrimeFaces 4.0). – Gilberto

0

Añadiendo el argumento -Duser.timezone=UTC a los parámetros de inicio fijos problema para mí.

En resumen: horario de trabajo solamente cuando así siguientes parámetros: son conjuntos: 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> 
0

que acaba de agregar el siguiente parámetro en web.xml y el problema se soluciona. No incluí ningún comando como -Duser.timezone = UTC al iniciar el servidor, pero se corrigió el problema.

javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE verdaderos

Saludos Jalil

0

estoy usando JBoss 8 y PF 5.0.RC1 y lo único que hizo el truco para mí fue la creación de la zona horaria el calendario para nada ...

<p:calendar timeZone = "" /> 

no sé si esto es una solución adecuada, se parece más a una solución, pero Funcionó bien localmente y se implementó.

2

Si está utilizando PrimeFaces 5, en su planificador:

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

Quizás es porque no insertó las horas. Por ejemplo, en este caso

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

la hora vendrá como 00:00 del día real. Y debido a que la zona horaria (-02: 00), la hora aparecerá como las 22:00 del día anterior al día real. Lo que se debe hacer es

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

aparecerá la hora, por lo que la zona horaria hará los cálculos correctos

0

En su componente de calendario, añadir un convertidor e indicar su zona horaria por ejemplo

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