[RESOLVIDO] Primefaces DataTable - <p:ajax não funciona

Pessoal poderima me dar uma ajuda, por favor.

Estou tentando implementar o p:ajax em um p:datatable. Estou utilizando prime 3.4. Não estou tendo sucesso. Simplesmente não faz ação nenhuma quando seleciono uma linha da tabela.

Segue os códigos:

[code]<?xml version="1.0" encoding="UTF-8" ?>

<ui:composition template=“Edit.xhtml”>
<ui:define name=“body”>
<h:form id=“form_pesquisa”>
<p:growl id=“msg” showDetail=“false” escape=“false” />

		<p:panelGrid styleClass="semBorda" columns="4">
			<h:outputLabel value="Nome do Usuário:" for="nome_user" />
			<p:inputText id="nome_user" required="true"
				value="#{alterarUsuarioController.usuarioSelecionado.nome}"
				title="#{bundle.CreateTiersTitle_nomTiers}" style="width:250px;" />

			<p:commandButton id="procurar_usuario" value="Procurar"
				actionListener="#{alterarUsuarioController.procurarUser()}"
				styleClass="btn_procurar_user" ajax="false"
				update="tabela_resultado_pesquisa">
			</p:commandButton>

			<p:commandButton id="alterar_usuario" value="Alterar"
				actionListener="#{alterarUsuarioController.procurarUser()}"
				disabled="#{alterarUsuarioController.desabilitaBtnAlterarUsuario}"
				styleClass="btn_alterar_user" ajax="false">
			</p:commandButton>


		</p:panelGrid>
		<br />
	</h:form>
	<h:form>

		<p:dataTable id="tabela_resultado_pesquisa"
			styleClass="tabela_resultado_pesquisa" var="usuario"
			value="#{alterarUsuarioController.listaUsuarioModel}"
			paginator="true" rows="10" rowKey="#{usuario.idUsuario}"
			emptyMessage="Nenhum registro."
			selection="#{alterarUsuarioController.usuarioSelecionado}">

			<p:ajax event="rowSelect"
				listener="#{alterarUsuarioController.habilitaEdicaoSelecionado}" update=":form_pesquisa"/>

			<f:facet name="header">
	          Resutado da Pesquisa
	        </f:facet>


			<p:column selectionMode="single" style="width:18px" />

			<p:column
				style="max-width: 150px; min-width: 150px; overflow: hidden; text-align: center">
				<f:facet name="header">
					<h:outputText value="User ID" />
				</f:facet>
				<h:outputText value="#{usuario.idUsuario}" />
			</p:column>

			<p:column
				style="max-width: 500px; min-width: 500px; overflow: hidden">
				<f:facet name="header">
					<h:outputText value="Nome" />
				</f:facet>
				<h:outputText value="#{usuario.nome}" />
			</p:column>

			<p:column
				style="max-width: 450px; min-width: 450px; overflow: hidden">
				<f:facet name="header">
					<h:outputText value="Email" />
				</f:facet>
				<h:outputText value="#{usuario.email}" />
			</p:column>

			<p:column
				style="max-width: 80px; min-width: 80px; overflow: hidden; text-align: center"
				rendered="#{usuario.userEnabled}">
				<f:facet name="header">
					<h:outputText value="Status" />
				</f:facet>
				<p:graphicImage value="/resources/images/icones/habilitado.png"
					title="Usuário Habilitado" />
			</p:column>

			<p:column
				style="max-width: 80px; min-width: 80px; overflow: hidden; text-align: center"
				rendered="#{!usuario.userEnabled}">
				<f:facet name="header">
					<h:outputText value="Status" />
				</f:facet>
				<p:graphicImage value="/resources/images/icones/desabilitado.png"
					title="Usuário Desabilitado" />
			</p:column>

			<p:column
				style="max-width: 80px; min-width: 80px; overflow: hidden; text-align: center"
				rendered="#{usuario.accessUser}">
				<f:facet name="header">
					<h:outputText value="Access" />
				</f:facet>
				<p:graphicImage value="/resources/images/icones/habilitado.png"
					title="Regras de Acesso Definidas" />
			</p:column>

			<p:column
				style="max-width: 80px; min-width: 80px; overflow: hidden; text-align: center"
				rendered="#{!usuario.accessUser}">
				<f:facet name="header">
					<h:outputText value="Access" />
				</f:facet>
				<p:graphicImage value="/resources/images/icones/desabilitado.png"
					title="Regras de Acesso Não Definidas" />
			</p:column>

		</p:dataTable>
	</h:form>
</ui:define>

</ui:composition>

[/code]

Bean:

package br.com.gd.bpp.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;

import org.primefaces.event.SelectEvent;

import br.com.gd.core.dominio.infra.Usuario;
import br.com.gd.core.vo.UsuarioDataModel;

import com.davidhodin.freeerp.data.util.JsfUtil;
import com.davidhodin.freeerp.data.util.ValidacoesUtil;

@ManagedBean
@SessionScoped
public class AlterarUsuarioController implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Usuario usuarioSelecionado;
	private List<Usuario> listaUsuarioPesquisado;
	private UsuarioDataModel listaUsuarioModel;
	private String indiceMenu;
	private String pagina;
	private boolean desabilitaAbaEdicao;
	ValidacoesUtil validator;
	private boolean desabilitaBtnAlterarUsuario;

	public AlterarUsuarioController() {
		usuarioSelecionado = new Usuario();
		validator = new ValidacoesUtil();
	}

	public String initAlterarUsuarioController() {
		usuarioSelecionado = new Usuario();
		listaUsuarioPesquisado = new ArrayList<Usuario>();
		setDesabilitaAbaEdicao(true);
		setDesabilitaBtnAlterarUsuario(true);

		return "/data/admin/user/List_user";
	}

	public String redirectListUsuario() {

		setIndiceMenu("0");
		pagina = "List_user";
		return pagina;
	}

	public String redirectEditUsuario() {

		setIndiceMenu("1");
		pagina = "Edit_user";
		return pagina;
	}

	public String procurarUser() {

		boolean ok = true;
		int minimunNameSize = 4;

		if (!(usuarioSelecionado.getNome() == null)) {
			if (!validator.validateNome(usuarioSelecionado.getNome())) {
				JsfUtil.addErrorMessage("Nome inválido");
				ok = false;

			}
			if (!validator.validateNomeSize(usuarioSelecionado.getNome(),
					minimunNameSize)) {
				JsfUtil.addErrorMessage("Nome deve conter no mínimo "
						+ minimunNameSize + " caracteres");
				ok = false;

			}

		} else {
			ok = false;
		}

		if (ok) {
			pesquisarUsuario();
		}

		return "";

	}

	private void pesquisarUsuario() {
		// Aqui vai a chamada do ejb
		setListaUsuarioPesquisado(carregaListaUsuario());
		listaUsuarioModel = new UsuarioDataModel(listaUsuarioPesquisado);
	}

	// MOCK para carregar lista de usuario
	private List<Usuario> carregaListaUsuario() {
		List<Usuario> lista = new ArrayList<Usuario>();
		Usuario user = new Usuario();

		user.setIdUsuario(100);
		user.setNome("Usuário de teste 1");
		user.setEmail("usuarioteste1@teste.com.br");
		user.setUserEnabled(true);
		user.setAccessUser(true);

		lista.add(user);

		user = new Usuario();
		user.setIdUsuario(200);
		user.setNome("Usuário de teste 2");
		user.setEmail("usuarioteste2@teste.com.br");
		user.setUserEnabled(false);
		user.setAccessUser(true);

		lista.add(user);

		user = new Usuario();
		user.setIdUsuario(300);
		user.setNome("Usuário de teste 3");
		user.setEmail("usuarioteste3@teste.com.br");
		user.setUserEnabled(true);
		user.setAccessUser(false);

		lista.add(user);
		
		setDesabilitaAbaEdicao(true);
		setDesabilitaBtnAlterarUsuario(true);

		return lista;
	}
	
	public void habilitaEdicaoSelecionado(SelectEvent event) {
		setDesabilitaBtnAlterarUsuario(false);
	}

	public List<Usuario> getListaUsuarioPesquisado() {
		return listaUsuarioPesquisado;
	}

	public void setListaUsuarioPesquisado(List<Usuario> listaUsuarioPesquisado) {
		this.listaUsuarioPesquisado = listaUsuarioPesquisado;
	}

	public UsuarioDataModel getListaUsuarioModel() {
		return listaUsuarioModel;
	}

	public void setListaUsuarioModel(UsuarioDataModel listaUsuarioModel) {
		this.listaUsuarioModel = listaUsuarioModel;
	}

	public Usuario getUsuarioSelecionado() {
		return usuarioSelecionado;
	}

	public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
		this.usuarioSelecionado = usuarioSelecionado;
	}

	public String getIndiceMenu() {
		return indiceMenu;
	}

	public void setIndiceMenu(String indiceMenu) {
		this.indiceMenu = indiceMenu;
	}

	public String getPagina() {
		return pagina;
	}

	public void setPagina(String pagina) {
		this.pagina = pagina;
	}

	public boolean isDesabilitaAbaEdicao() {
		return desabilitaAbaEdicao;
	}

	public void setDesabilitaAbaEdicao(boolean desabilitaAbaEdicao) {
		this.desabilitaAbaEdicao = desabilitaAbaEdicao;
	}

	public ValidacoesUtil getValidator() {
		return validator;
	}

	public void setValidator(ValidacoesUtil validator) {
		this.validator = validator;
	}

	public boolean isDesabilitaBtnAlterarUsuario() {
		return desabilitaBtnAlterarUsuario;
	}

	public void setDesabilitaBtnAlterarUsuario(
			boolean desabilitaBtnAlterarUsuario) {
		this.desabilitaBtnAlterarUsuario = desabilitaBtnAlterarUsuario;
	}

}

Obrigado

Aquiupdate=":form_pesquisa"vai “:” mesmo?
Não seria

update="form_pesquisa"

Já tentei colocar assim, mas também não funcionou… :roll: :cry:

Cara, estou com o mesmo problema! como você resolveu?

Alexandre, bom dia.

Qual problema vc esta tendo? esta dando algum erro ou somente não faz ação nenhuma?

Tive que implementar um UsuarioDataModel.

Me passa o problema q vc esta tendo.

[quote=camilooscar]Alexandre, bom dia.

Qual problema vc esta tendo? esta dando algum erro ou somente não faz ação nenhuma?

Tive que implementar um UsuarioDataModel.

Me passa o problema q vc esta tendo.[/quote]

Opa, e ai meu velho, blz ? Vc tem algum exemplo ai onde eu possa alimentar uma dataTable ?

ex: Tenho 2 campos -> Item e quantidade… Gostaria de de alimentar esse 2 campos numa dataTable… E jogar esses valores no banco.

Vou tentar desenhar aqui:


Item: _________ Quantidade:_____ [Adicionar]

Tabela

Item Quantidade
x 2
z 25
e 35

[Cadastrar] [Limpar]


Entendeu mais ou menos ? Eu tenho q criar um DataModel p isso ? To meio perdido : /

Vlw :slight_smile:

Resolvido ?

Aonde ?

Cade o resultado ?

:frowning:

Se alguém souber algo, estou com problema em colocar um evento de click para as linhas do <p:datatable />
para limpar um combo.

<p:ajax /> não é aceito.

Valew