2011-11-06 12 views
11

Utilizzo di jsf 2.2.0.calendario primefaces: immissione data errata

Per tutta la data, sembra rimuovere un giorno. Quando clicco su 8 novembre, visualizza 11/08/2011. Ma poi memorizza 7 Nov 2011 nel mio campo Data nel mio bean gestito.

Vivo a Singapore, chiedendo se si tratta di un problema con il fuso orario.

+1

Could essere. In caso contrario, può essere un problema di Primefaces. È piuttosto buggy ... Ad ogni modo, non usare 'Date'-s, usa invece' Calendar'-s. – zeller

+0

Un campo Data non può nemmeno memorizzare una data specifica. Tutto ciò che memorizza è un numero intero. Esistono diversi modi per trasporre l'intero in una data, da cui proviene il problema. – MatsT

+0

@zeller Sono interessato alla tua raccomandazione di non utilizzare java.util.Date. Perchè è questo? – 8bitjunkie

risposta

-1

Hai provato a impostare l'attributo timezone e locate? In caso contrario, è possibile creare un oggetto convertitore che converta la data. Questo è un tutorial per creare un convertitore personalizzato: http://www.roseindia.net/jsf/customconverter.shtml

23

prova ad aggiungere questo al vostro web.xml

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

È sicuramente un problema di fuso orario. È possibile (dovrebbe essere) eseguire il server in UTC. Primefaces regionalizzerà la tua data e la convertirà all'ora dell'utente. È possibile, e probabilmente dovrebbe, eseguire il server con "-Duser.timezone = UTC". Il parametro context dovrebbe risolverlo. –

+0

Confermato, problema di fuso orario. Il parametro context lo ha risolto (JSF 2.2.5, PrimeFaces 4.0). – Gilberto

0

Aggiungendo l'argomento -Duser.timezone=UTC ai parametri di avvio Corretto il problema per me.

Riassumendo: lavoro pianificazione bene solo quando seguenti parametri sono insiemi:: 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

Ho appena aggiunto il seguente parametro in web.xml e il problema viene risolto. Non ho incluso alcun comando come -Duser.timezone = UTC durante l'avvio del server, tuttavia è stato risolto il problema.

javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE veri

saluti Khaleel

0

sto usando wildfly 8 e PF 5.0.RC1 e l'unica cosa che ha fatto il trucco per me è stato l'impostazione del fuso orario di il calendario a nulla ...

<p:calendar timeZone = "" /> 

Non so se questa è una soluzione adeguata, sembra più una soluzione alternativa, ma ha funzionato bene localmente e distribuito.

2

Se si utilizza primefaces 5, nella vostra scheduler:

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

forse è perché non hai inserito le ore. Per esempio in questo caso

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

l'ora verrà come 00:00 del giorno attuale. E poiché il fuso orario (-02: 00), l'ora apparirà come 22:00 del giorno prima del giorno effettivo. La cosa giusta da fare è

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

apparirà l'ora, in modo che il fuso orario farà i calcoli corretti

0

nel componente calendario, aggiungere un convertitore e di indicare il vostro esempio fuso orario

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