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