Problema com p:calendar

Bom dia galera!

Estou com problema ao pegar a data e hora pelo componente <p:calendar> do primeFaces…

o meu codigo da view

                            <p:calendar id="dataI" mindate="#{login.data}" maxdate="#{login.data}" 
                                        showButtonPanel="true" value="#{registroAtividadeBean.regristroAtividade.dataInicial}"
                                        pattern="dd/MM/yyyy HH:mm" requiredMessage="A DATA/HORA INICIAL é necessária."
                                        >
                                <f:ajax render="di dataF" event="blur" execute="@this"/>
                            </p:calendar>  
                            <p:message for="dataI" id="di" display="icon"/>

                            <h:outputLabel for="dataF" value="Data/Hora Final*: " style="font-weight:bold"/>
                            <p:calendar id="dataF" mindate="#{registroAtividadeBean.data}" maxdate="#{login.data}" 
                                        value="#{registroAtividadeBean.regristroAtividade.dataFinal}" pattern="dd/MM/yyyy HH:mm"
                                        required="true">
                                <f:ajax render="df" execute="@this"/>
                            </p:calendar>
                            <p:message for="dataF" id="df" display="icon"/>

o tipo da data na minha entidade é @TEMPORAL … timestamp

E qual o seu problema?

Alguma mensagem de erro?

sem mensagem de erro… ele simplesmente não salva a data e nem hora… agora se eu dou um New Date no atributo ele me pega a hora atual… porem eu não posso alterar ela para qualquer outra data pelo componente

Ao debugar, antes de salvar a data está dentro do objeto?

sim… talvez seja um bug no componente devido estar usando a lib 3.01M1 do prime…

Cara, se a data está presente antes de salvar, o problema não é com o primefaces, poderia ser se o valor não estivesse lá.

Como você está persistindo o objeto?

tipo ele me tras a data atual do sistema exemplo: 23/12/2011 14:06 … ai eu seu mudo pra “14:07” ele não salva 14:07 e sim 14:06 …

Não estou entendendo.

Vamos lá, você seleciona dia 1/1/2001 01:01 no calendar. Antes de salvar a data na sua classe, como ela está?

Ta vamos la vou tentar ser o mais claro o possivel… estou utiliziando o componete do primefaces P:calendar para pegar data e hora…

na minha entidade estou utiliziando:

@Temporal(TemporalType.TIMESTAMP) private Date dataInicial;

eu não estou inicializando esta data em um determinado momento… quando faço isso ela preenche meu p:calendar com a data atual do sistema… se eu modificar essa data para qualquer outra data não existe uma alteração de horario e fica na mesma…

agora se eu não iniciar a data com new Date()… minha data é nula mesmo passando algo pelo p:calendar . entendeu?

Blz então.

Mas aí volto a te perguntar, quando você envia o valor para ser salvo, antes dessa informação ser persistida no banco:

O valor está correto ou errado?

está null! ele não envia nada pro meu bean! isso é apenas no campo Calendar ;x

Existem outros campos na tela para edição? Ou são apenas esses?

Tem como você postar o código do registroAtividadeBean?

será que não esta faltando timeZone=“America/Sao_Paulo” ?

Acho dificil ser esse o motivo de não estar dando certo timeZone, até pq ele salvaria como outro timeZone.

um dos motivos pode ser o seu pattern. Observe se ele está de acordo com sua classe, faça um teste, tire o pattern, e de um system.out.println no bean para verificar se a data foi para o bean

Concordo com o jonatex.

Se fosse apenas o Timezone a hora estaria -2 ou seja lá o que for.

Perguntei se existem outros campos para edição para saber se os valores dos mesmo estão sendo alterados ou não.

vai que não tem nada sendo alterado além do p:calendar.

Pode ser também.

Mas axo mais provável que seja a declaração no Bean.

por favor, poste o bean

<p:ajax event=“dateSelect”>
tente isso se ainda nao resolveu abraço

Bom dia,

Tive esse problema quando o o <p:calendar> estava comunicando com um Calendar no Mbean.

Alterei para Date e resolveu.