JSF2.0 PrimeFaces - p:dataTable não atualiza após alteração da lista

2 respostas
I

Olá amigos, estou com um problema com o PrimeFaces.
Na mesma pagina eu tenho um formulario e uma lista, clicando no registro da lista, eu consigo editar a linha, preenchendo o formulario.
ao salvar, o sistema nào atualiza* a lista do formulario.

Etapas:
Eu utilizo no cabeçalho das colunas o filtro .
Digamos que eu filtre todos os contatos cadastrados no dia 13.
Ele me exibe 5 Contatos.
Atualizo um desses contatos mudando para o dia para 14 e salvo(submetendo o formulário e alterando o objeto da lista).
O sistema atualiza o registro na lista, indicando a data como 14, porem, o registro deveria desaparecer da lista, já que o filtro está pegando apenas os contatos do dia 13.
Se eu digitar algo no filtro, ele atualiza a lista corretamente, não exibindo o registro com a data divergente.
Como ele não está sumindo com o registro, se eu tentar edita-lo novamente, irá pegar o registro da linha abaixo ou da erro se o registro for único ou ultimo da lista.

O que eu preciso, é que o sistema mantenha o filtro das colunas e quando atualizar o registro, no caso, quando sair das condições do filtro, ele deve desaparecer da listagem.

a minha estrutura está assim:

<h:form id="contatoForm">
<p:panel id="painelCadastro" header="Cadastrar Novo Contato" style="text-align:left;width:800px;">
<h:panelGrid columns="2" width="545">
<h:outputLabel value="Nome do Contato" />
					<h:inputText id="nome" value="#{contatoController.contato.nome}"
						size="20" />
<h:outputLabel value="Data Cadastro" />
					<p:calendar value="#{contatoController.contato.dtCad}" size="10"
						pattern="dd/MM/yyyy" showOn="button" />
<p:commandButton value="Salvar"
						action="#{contatoController.gravar}" 
						ajax="true" update="contatoForm, contatoForm:painelCadastro,contatoForm:pnlConsulta,contatoForm:tblContatos, contatoForm:tblContatos:clnData">
						
						</p:commandButton>

<p:panelGrid id="pnlConsulta" header="Lista de contatos cadastrados"
				style="text-align:left; width:1250px;"  rendered="true" columns="1">

                                        <p:dataTable value="#{contatoController.listaContatos}" id="tblContatos"
					emptyMessage="Nenhum registro encontrado" rowIndexVar="var"  
					paginator="true" paginatorPosition="bottom"
					firstPageLinkLabel="Primeira" previousPageLinkLabel="Anterior"
					nextPageLinkLabel="Proxima" lastPageLinkLabel="ultima" rows="50"
					var="contato" style="font-size:0.9em;" >


					<p:column filterBy="#{contato.nome}" filterMatchMode="contains" sortBy="#{contato.nome}">
						<f:facet name="header">
							<h:outputText value="Nome" style="font-size:1.0em; font-weight:bold;" />
						</f:facet>
						<h:outputText value="#{contato.nome}" />
					</p:column>

                                         <p:column filterBy="#{contato.dtCadStr}"
						sortBy="#{contato.dtCad}" style="width: 150px;" id="clnData">
						
						<f:facet name="header">
							<h:outputText value="Data Cadastro" style="font-size:1.0em; font-weight:bold;" />
						</f:facet>
						<h:outputText value="#{contato.dtCadStr}" styleClass="letra1" />
					</p:column>

	             </p:dataTable>
			</p:panelGrid>

		

	</h:form>

PrimeFaces versão 3.1 - baixado em 28/01/2012

Alguém tem alguma ideia do que pode ser feito?

2 Respostas

paulociecomp

E o seu managed bean como ta?

I

Então amigo, o managed bean está bem simples!

referencio o objeto da lista, edito ele e submeto as modificações para o DB.

Criado 28 de janeiro de 2012
Ultima resposta 14 de fev. de 2012
Respostas 2
Participantes 2