Galera, meu problema eh o seguinte:
eu tenho uma popup para busca de logradouros, e eu
implementei essa popup usando alguns p:inputTexts para a pesquisa e
uma p:datatable para listagem, dentro de uma p:dialog.
Quando o usuário clica numa linha da datatable, é para atualizar 3 campos
na página de cadastro, com as informações do registro selecionado. Isso funciona da primeira vez,
mas apenas para 2 campos(nome da rua e nome do bairro), e depois da primeira vez não funciona mais
para campo nenhum, e o campo que não funciona nem na primeira vez é o campo do CEP.
Eu debuguei e observei que no bean os valores são alterados perfeitamente, mas quando volta para a
página, os campos não são atualizados.
alguém pode me ajudar?
abaixo segue o código da página, só com os campos a serem atualizados, e tbm com a p:dialog:
<h:outputText value="CEP:"/>
<p:inputText id="logrCEP" value="#{empresaBean.logradouro.logrCep}">
<f:ajax event="blur" execute="@this" listener="#{empresaBean.pesquisarPorCep}" render="logrCEP logrCodigo logrNome logrBairro"/>
</p:inputText>
<p:commandLink onclick="popupLogradouro.show()" title="Abrir Popup de Busca">
<h:graphicImage url="/images/lens_32x32.png" width="24" height="26" style="border: none;"/>
</p:commandLink>
<h:inputHidden id="logrCodigo" value="#{empresaBean.logradouro.LOGRCodigo}" required="true" requiredMessage="O Logradouro é Obrigatório"/>
<h:outputText value="Endereço:"/>
<p:inputText id="logrNome" value="#{empresaBean.empresa.EMPREndereco}" required="true" requiredMessage="O Endereço é Obrigatório"/>
<h:outputText/>
<h:outputText value="Bairro:"/>
<p:inputText id="logrBairro" value="#{empresaBean.empresa.EMPRBairro}" required="true" requiredMessage="O Bairro é Obrigatório"/>
<p:dialog header="Escolha um Logradouro" widgetVar="popupLogradouro" modal="true" draggable="false"
width="680" resizable="false" showEffect="fold" hideEffect="slide" closeOnEscape="true">
<h:panelGrid id="pesquisarCEP" columns="5">
<h:outputText value="Estado"/>
<h:outputText value="Cidade"/>
<h:outputText value="Logradouro"/>
<h:outputText/>
<h:outputText/>
<p:inputText onblur="this.value = this.value.toUpperCase();" maxlength="2" binding="#{logradouroBean.selectEstado}" id="ddlUF" style="width: 50px;"/>
<p:inputText id="itCidade" binding="#{logradouroBean.inputCidade}" value="#{logradouroBean.cidade}" />
<p:inputText id="itLogradouro" binding="#{logradouroBean.inputRua}" value="#{logradouroBean.logr}"/>
<p:commandLink action="#{logradouroBean.pesquisar}" immediate="true" ajax="true" onstart="imgAjax.show();" oncomplete="imgAjax.hide();" update="tabelaLogradouro,msg">
<h:graphicImage url="/images/lens_32x32.png" width="24" height="26" style="border: none;"/>
</p:commandLink>
</h:panelGrid>
<p:dataTable id="tabelaLogradouro" var="logrListar" value="#{logradouroBean.listaPopup}"
emptyMessage="Nenhum Registro Encontrado" paginator="true" rows="10"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
paginatorPosition="bottom" selectionMode="single" selection="#{empresaBean.logradouro}"
update="logrCEP,logrCodigo,logrNome,logrBairro" style="font-size: 13px; width:100%;">
<f:facet name="header">
Lista de Logradouros
</f:facet>
<p:column filterBy="#{logrListar.LOGRNome}" filterMatchMode="contains" filterStyle="width: 100%;">
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{logrListar.LOGRNome}"/>
</p:column>
<p:column filterBy="#{logrListar.logrCep}" filterMatchMode="startsWith" filterStyle="width: 100%;">
<f:facet name="header">
<h:outputText value="CEP"/>
</f:facet>
<h:outputText value="#{logrListar.logrCep}"/>
</p:column>
<!-- <p:column>
<p:commandLink title="Ok" ajax="true" actionListener="{empresaBean.atualizarCEP}" update="logrCEP,logrCodigo,logrNome,logrBairro">
<h:graphicImage url="images/check_mark_32x32.png" height="24" width="24" style="border: none;"/>
<f:setPropertyActionListener value="{logradouroBean.listaPopup}" target="{empresaBean.listaLogradouros}"/>
</p:commandLink>
</p:column>-->
</p:dataTable>
</p:dialog>
só mais um detalhe: a tag f:ajax dentro do inputText do CEP é para o caso do usuário saber o CEP e não precisar da popup,
então ele digita o CEP e quando o campo perder o foco o sistema busca o endereço do CEP digitado.