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

6 respostas
C

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:

<?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">

<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>
</html>

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("[email removido]");
		user.setUserEnabled(true);
		user.setAccessUser(true);

		lista.add(user);

		user = new Usuario();
		user.setIdUsuario(200);
		user.setNome("Usuário de teste 2");
		user.setEmail("[email removido]");
		user.setUserEnabled(false);
		user.setAccessUser(true);

		lista.add(user);

		user = new Usuario();
		user.setIdUsuario(300);
		user.setNome("Usuário de teste 3");
		user.setEmail("[email removido]");
		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

6 Respostas

A

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

update="form_pesquisa"
C

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

A

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

C

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.

T

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.

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:

T

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

Criado 17 de setembro de 2012
Ultima resposta 10 de nov. de 2014
Respostas 6
Participantes 5