Botão dentro do DataTable do PrimeFaces com paginação só funciona na primeira página

Bom dia,

estou com o seguinte problema: estou exibindo os dados em um DataTable do PrimeFaces, quando não utilizo paginação funciona normal, mas quando coloco paginação, os botões que ficam dentro da tabela só funcionam na primeira página, nas páginas seguintes os botões não executam nada.

Segue o xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
<h:head>
	<title>Cadastro de Alunos</title>
	<link type="text/css" rel="stylesheet" href="css/redmond/css.css" />
	<link rel="stylesheet" type="text/css" href="css/menu.css" />
</h:head>
<ui:composition template="/Menu.xhtml">
	<ui:define name="conteudo">
		<h:body>
			<f:view encoding="ISO-8859-1">
				<h:form id="cadastroUsuario">
					<p:panel header="Cadastro de Usuários" collapsed="true" style="font-size: 24px;" />
					<br />
					<h:panelGrid columns="2" width="70%">
						<h:outputLabel value="Nome" />
						<p:inputText id="txtNome" value="#{cadastroUsuario.usuario.nome}"
							size="20" />

						<h:outputLabel value="Senha" />
						<p:password id="txtSenha" value="#{cadastroUsuario.usuario.senha}"
							size="20" feedback="true" />
						<h:outputLabel value="Confirmação" />
						<p:password id="txtSenha2"
							value="#{cadastroUsuario.confirmacaoSenha}" size="20"
							feedback="true" />
					</h:panelGrid>
					<br />
					<p:selectBooleanCheckbox id="ckCadastraUsuario"
						value="#{cadastroUsuario.usuario.permiteCadastrarUsuario}" />
					<h:outputText value="Permite Cadastar Usuários" />
					<br />
					<p:selectBooleanCheckbox id="ckBloqueado"
						value="#{cadastroUsuario.usuario.bloqueado}" />
					<h:outputText value="Usuário Bloqueado" />
					<br />
					<div align="right">
						<p:commandButton action="#{cadastroUsuario.novo}" value="Novo"
							style="width:200px" ajax="false" update="cadastroUsuario" />
						<p:commandButton action="#{cadastroUsuario.cadastrar}"
							value="Cadastrar" style="width:200px" ajax="false"
							update="cadastroUsuario" />
					</div>
					<br />
					<p:dataTable id="tabela" var="user"
						value="#{cadastroUsuario.usuarios}"
						emptyMessage="Nenhum Usuário está cadastrado" paginator="true"
						rows="3" paginatorPosition="top" >
						<p:column style="width:200px">
							<f:facet name="header">
								<h:outputText value="Nome" />
							</f:facet>
							<h:outputText value="#{user.nome}" />
						</p:column>
						<p:column style="width:200px">
							<f:facet name="header">
								<h:outputText value="Ações" />
							</f:facet>
							<p:commandButton action="#{cadastroUsuario.editar}"
								value="Editar" ajax="false" update="cadastroUsuario">
								<f:setPropertyActionListener value="#{user}"
									target="#{cadastroUsuario.usuario}" />
							</p:commandButton>
							<p:commandButton action="#{cadastroUsuario.remove}"
								value="Excluir" ajax="false" update="cadastroUsuario">
								<f:setPropertyActionListener value="#{user}"
									target="#{cadastroUsuario.usuario}" />
							</p:commandButton>
						</p:column>
					</p:dataTable>
					<p:panel header="Exportar">
						<p:commandButton value="PDF" ajax="false">
							<p:dataExporter type="pdf" target="tabela" fileName="usuarios"
								excludeColumns="1" />
						</p:commandButton>
					</p:panel>
				</h:form>
			</f:view>
		</h:body>
	</ui:define>
</ui:composition>
</html>

Muito estranho.

Tenho um projeto aqui no meu notebook que tem a mesma datatable. Só adicione a paginação e funcionou normalmente.

Outra dica:

Em vez de usar isso:

<f:facet name="header"> <h:outputText value="Ações" /> </f:facet>

Você pode usar isso:

<p:column headerText="Ações"> // botoes... </p:column>

Praticamente igual a minha página. A única diferença que ví entre a minha e a sua é que no cadastro eu tenho um <h:form> e na lista eu tenho outro.

Teste e ver se funciona dessa forma!

Abraço.

Vlw pela dica,

Coloque o <h:form> exatamente antes do <p:dataTable> e continuou da mesma maneira, parece que tem alguma coisa haver com o Ajax, quando clico no botão ele volta para a primeira página da tabela, mas não carrega os campos da edição, e se eu clico em qualquer botão da primeira página funciona normal.

Será que tem como você colocar o código da página que você diz que usa, assim eu posso ver se tem alguma coisa que eu estou esquecendo de colocar e ver se a maneira como eu uso o Ajax está batendo com o seu.

Obrigado

[b]Coloque um form para o cadastro e outro para a datatable.

Caso não funcione, tire o update do botão.

Abraço.[/b]

Cara eu tentei colocar um form para cada, não funcionou, terei o Update dos botões, mas também não funcionou.

Vlw

Segue o simples código:

[code]<p:panel header=“Cadastro de contatos”>

			<h:form>
				
				<h:panelGrid columns="2">
					
						<h:outputLabel value="Nome:" />
						<p:inputText value="#{agendaSupport.cliente.nome}" styleClass="inputDefault" />
						
						<h:outputLabel value="Telefone:" />
						<p:inputText value="#{agendaSupport.cliente.telefone}" styleClass="inputDefault" />	
						
						<h:outputLabel value="" />
						<p:commandButton action="#{agendaSupport.save}" ajax="false" value="Salvar" />
						
					</h:panelGrid>
										
				</h:form>
				
				<p:spacer width="4" />
				
				<h:form>
				
					<p:dataTable value="#{agendaSupport.listCliente}" var="cli" 
								 emptyMessage="Nada encontrado!" paginator="true" rows="4">
					
						<p:column headerText="Edit" style="width: 10px; text-algin: center;">
							<p:commandLink ajax="false" action="#{agendaSupport.showUpdateButton}">
								<h:graphicImage value="/images/edit.png" />
								<f:setPropertyActionListener target="#{agendaSupport.cliente}" value="#{cli}" />
							</p:commandLink>
						</p:column>
					
						<p:column headerText="Nome" filterBy="#{cli.nome}">
							<h:outputLabel value="#{cli.nome}" />
						</p:column>
						
						<p:column headerText="Telefone">
							<h:outputLabel value="#{cli.telefone}" />
						</p:column>
						
						<p:column headerText="Del" style="width: 10px; text-algin: center;">
							<p:commandLink action="#{agendaSupport.remove}" ajax="false">
								<h:graphicImage value="/images/del.png" />
								<f:setPropertyActionListener target="#{agendaSupport.cliente}" value="#{cli}" />
							</p:commandLink>
						</p:column>
											
					</p:dataTable>
					
				</h:form>	
				
	</p:panel>[/code]

Funciona perfeitamente!

Abraço.