Problema em recuperar Data no PrimeFaces (Resolvido)

Tenho uma aplicação que chama um caixa de dialogo com uma tabView e em uma de suas abas tento recuperar a data de um componente calendar. Na tentativa de testar criei uma função que imprime a data do calendar, mas simplesmente imprime null. Por favor se alguém puder me ajudar ficaria muito grato…

Código da Caixa de dialogo:


<h:form id="formE">
                <p:dialog header="Cadastro e edição de Eventos" widgetVar="dialogEvento"  resizable="false" modal="true" showEffect="slide" width="900">
                    <p:growl id="EventoGrowl" showDetail="true" sticky="true" /> 
                    <p:tabView id="tabView"> 
                        <p:tab id="tab1" title="Evento"> 

                            <h:panelGrid id="Eventogr" columns="2" style="margin-bottom:10px">

                                <h:outputLabel for="nomeE" value="Nome" />
                                <p:inputText id="nomeE" value="#{eventoBean.evento.nome}" required="true" label="Nome do Evento"/> 
                                <h:outputLabel for="classificacaoE" value="Classificação" />
                                <p:inputText id="classificacaoE" value="#{eventoBean.evento.classificacao}" required="true" label="Classificação do Evento"/>
                                <h:outputLabel for="alvaraE" value="Alvara" />
                                <p:inputText id="alvaraE" value="#{eventoBean.evento.alvara}" validatorMessage="e-Mail inválido"/>
                                <h:outputLabel for="protocoloE" value="Protocolo" />
                                <p:inputText id="protocoloE" value="#{eventoBean.evento.protocolo}"/>
                                <h:outputLabel for="protocoloE" value="Tipo do Evento" />
                                <p:selectOneMenu id="tipoE" value="#{eventoBean.evento.tipoevento}">  
                                    <f:selectItem itemLabel="Escolha um tipo" itemValue="" />  
                                    <f:selectItem itemLabel="Interno" itemValue="interno" />  
                                    <f:selectItem itemLabel="Particular" itemValue="particular" />  
                                    <f:selectItem itemLabel="Beneficente" itemValue="beneficente" />  
                                </p:selectOneMenu>

                                <h:outputLabel for="ruaE" value="Rua" />
                                <p:inputText id="ruaE" value="#{eventoBean.evento.rua}"/>
                                <h:outputLabel for="numeroE" value="Número" />
                                <p:inputText id="numeroE" value="#{eventoBean.evento.numero}"/>
                                <h:outputLabel for="bairroE" value="Bairro" />
                                <p:inputText id="bairroE" value="#{eventoBean.evento.bairro}"/>
                                <h:outputLabel for="cidadeE" value="Cidade" />
                                <p:inputText  id="cidadeE" value="#{eventoBean.evento.cidade}"/>


                            </h:panelGrid>

                        </p:tab>  

                        <p:tab id="tab2" title="Status do Evento" disabled="#{eventoBean.disabilitato}">

                            <h:panelGrid columns="2" cellpadding="10">
                                <h:outputLabel value="Status do Evento" for="statusevento"/> 
                                <p:selectOneMenu id="statusevento" value="#{eventoBean.idStatus}" required="true">  
                                    <f:selectItems var="statusE" value="#{eventoBean.listaStatus}" 
                                                   itemLabel="#{statusE.status}"
                                                   itemValue="#{statusE.idstatus}"/>  
                                </p:selectOneMenu>
                                <h:outputLabel for="descricaoS" value="Descrição"/>
                                <p:inputTextarea id="descricaoS" value="#{eventoBean.texto}"/>
                            </h:panelGrid> 

                        </p:tab>  

                        <p:tab id="tab3" title="Produto Material"> 

                            <p:dataTable  id="tabelaProMat" var="promat" value="#{eventoBean.listaQPM}" paginator="true" rows="3"  
                                          paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                          rowsPerPageTemplate="3,6">
                                <f:facet name="header">
                                    <p:commandButton id="chamadaaddpm" oncomplete="dialogAddPM.show();" update=":formE:tabView:tabelaProMat" value="Adicionar Produto Material" />
                                </f:facet> 
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="ID"/>
                                    </f:facet>
                                    <h:outputText value="#{promat.idPro}" />
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Produto"/>
                                    </f:facet>
                                    <h:outputText value="#{promat.nome}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Quantidade"/>
                                    </f:facet>
                                    <h:outputText value="#{promat.quantidade}"/>
                                </p:column>
                                <p:column>
                                    <p:commandButton id="excluirpm" immediate="true" ajax="true" action="#{eventoBean.removerListaProdMatEvento}"  update="tabelaProMat" 
                                                     value="Excluir" onclick="if (!confirm('Confirma a exclusão do Produto Material #{promat.nome}?'))
                        return false;">
                                        <f:setPropertyActionListener target="#{eventoBean.produto}" value="#{promat}"/>
                                    </p:commandButton>
                                </p:column>
                            </p:dataTable>

                        </p:tab> 

                        <p:tab id="tab4" title="Contato"> 

                            <h:panelGrid columns="2" cellpadding="10">
                                <h:outputLabel value="Contato" for="contatoOneM"/> 

                                <p:selectOneMenu id="contatoOneM" value="#{eventoBean.idContato}" rendered="true">  
                                    <f:selectItem itemLabel="Selecione um Contato" itemValue="0"/>
                                    <f:selectItems var="contOm" value="#{contatoBean.lista}" 
                                                   itemLabel="#{contOm.nome}"
                                                   itemValue="#{contOm.idcontato}"/>  
                                </p:selectOneMenu>
                                <p:commandButton id="novocontato" oncomplete="dialogContato.show();" value="Novo Contato"/>
                            </h:panelGrid>

                        </p:tab>

                        <p:tab id="tab5" title="Dias do Evento">

                            <p:dataTable  id="tabelaDiaEvento" var="diaevt" value="#{eventoBean.listaDiaevento}" paginator="true" rows="3"  
                                          paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                          rowsPerPageTemplate="3,6">
                                <f:facet name="header">
                                 
                                 // CODIGO DO COMPONENTE CALENDAR

                                    <p:calendar value="#{ dataBean.date}" id="calendariodialogo" />
                                    <p:commandButton id="adicionardiaevento" immediate="true" actionListener="#{dataBean.teste()}" update="tabelaDiaEvento"  value="Adicionar Dia Evento" />

                                </f:facet> 
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Dia do Evento"/>
                                    </f:facet>
                                    <h:outputText value="#{diaevt.dataE}">
                                        <f:convertDateTime pattern="dd/MM/yyyy"/>
                                    </h:outputText>
                                </p:column>
                                <p:column>
                                    <p:commandButton id="excluirdiaev" ajax="true" immediate="true" action="#{eventoBean.removerDiaEvento()}"  update="tabelaDiaEvento" 
                                                     value="Excluir" onclick="if (!confirm('Confirma a exclusão do Produto Material #{promat.nome}?'))
                        return false;">
                                        <f:setPropertyActionListener target="#{eventoBean.diaevento}" value="#{diaevt}"/>
                                    </p:commandButton>
                                </p:column>
                            </p:dataTable>

                        </p:tab>


                    </p:tabView>

                    <p:commandButton id="salvarevento" action="#{eventoBean.salvar}" value="Salvar" update=":formEvento:tabelaEvento" onclick="dialogEvento.hide();"/>



                </p:dialog>

            </h:form>

Codigo do DataBean de teste:

@ManagedBean
public class DataBean {
    
    private Date date;

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
    
    public void teste(){
        System.out.println("teste");
        System.out.println(this.date);
    }
    
}

seu managedBean está como @RequestScope, vai ser instanciado em qualquer requisição, sendo assim na troca de aba vc sempre verá como null.

Já havia tentado @SessionScoped mas novamente troquei e ainda permanece o erro…
Tem três dias que estou tentando resolver este problema…

troque seu método de actionListener para action, vc não está utilizando o parâmetro ActionEvent logo não precisa usar o actionListener. veja qual o id do input do calendar e mande processar pelo atributo process no botão.

Na próxima vez que abrir um tópico, por favor só poste o código relevante.
Ter que ficar dando Find no browser pra achar o código em questão não é muito legal, e pode fazer muitas pessoas não quererem te ajudar.

Mas enfim, você está fazendo uma chamada ajax com o seu botão, tente enviar o valor do calendar no onchange, e depois invocar a ação:<p:calendar value="#{dataBean.date}" id="calendariodialogo"> <p:ajax event="change" process="@this" update="@this"/> </p:calendar> <p:commandButton id="adicionardiaevento" immediate="true" actionListener="#{dataBean.teste()}" update="tabelaDiaEvento" value="Adicionar Dia Evento" />

Concordo com o Rodrigo, fiquei meio perdido no seu código.

[quote=Rodrigo Sasaki]Na próxima vez que abrir um tópico, por favor só poste o código relevante.
Ter que ficar dando Find no browser pra achar o código em questão não é muito legal, e pode fazer muitas pessoas não quererem te ajudar.

Mas enfim, você está fazendo uma chamada ajax com o seu botão, tente enviar o valor do calendar no onchange, e depois invocar a ação:<p:calendar value="#{dataBean.date}" id="calendariodialogo"> <p:ajax event="change" process="@this" update="@this"/> </p:calendar> <p:commandButton id="adicionardiaevento" immediate="true" actionListener="#{dataBean.teste()}" update="tabelaDiaEvento" value="Adicionar Dia Evento" /> [/quote]

Me desculpem mas é que fiz um teste em uma outra pagina simples e ele funcionou então achei que seria relevante…

e quando troco meu actionListener por action meu botão simplesmente não funciona…não manda imprimir nem “teste”…

[quote=jpmpassos]Me desculpem mas é que fiz um teste em uma outra pagina simples e ele funcionou então achei que seria relevante…

e quando troco meu actionListener por action meu botão simplesmente não funciona…não manda imprimir nem “teste”…[/quote]
Mas a minha sugestão não foi essa. Foi adicionar a tag p:ajax ao seu calendar

cade o process no seu:

<p:commandButton id="adicionardiaevento" immediate="true" actionListener="#{dataBean.teste()}" update="tabelaDiaEvento" value="Adicionar Dia Evento" />
??
a troca do actionListener por action não influencia em nada…

[quote=Rodrigo Sasaki]Na próxima vez que abrir um tópico, por favor só poste o código relevante.
Ter que ficar dando Find no browser pra achar o código em questão não é muito legal, e pode fazer muitas pessoas não quererem te ajudar.

Mas enfim, você está fazendo uma chamada ajax com o seu botão, tente enviar o valor do calendar no onchange, e depois invocar a ação:<p:calendar value="#{dataBean.date}" id="calendariodialogo"> <p:ajax event="change" process="@this" update="@this"/> </p:calendar> <p:commandButton id="adicionardiaevento" immediate="true" actionListener="#{dataBean.teste()}" update="tabelaDiaEvento" value="Adicionar Dia Evento" /> [/quote]

fiz a troca mas infelizmente o erro percistiu…

[quote=kleberdamasco]cade o process no seu:

<p:commandButton id="adicionardiaevento" immediate="true" actionListener="#{dataBean.teste()}" update="tabelaDiaEvento" value="Adicionar Dia Evento" />
??
a troca do actionListener por action não influencia em nada…[/quote]

coloquei o process abaixo e também não funcionou…

                  <p:calendar rendered="true" locale="pt"  value="#{dataBean.date}" id="calendariodialogo" />
                  <p:commandButton id="adicionardiaevento" process="@this,calendariodialogo" immediate="true" actionListener="#{dataBean.teste()}" 
                                   update="tabelaDiaEvento"  value="Adicionar Dia Evento" />

Só por desencargo de consciência coloque ajax=false no seu botão e teste

não posso usar o ajax = false pq ai fecha minha caixa de dialogo…
mas coloquei só pra testar e tbm apareceu null…

Mesmo @SessionScoped?

mesmo assim ainda continua o problema…

Meu problema foi resolvido com a retirada da prorpiedade immediate=“true”… mas tenho muito a agradecer pois antes sem essa propriedade o botão não funcionava mas com a dica de usar process="" foi possivel retirar a immediat

muito obrigado a Todos…