Boa tarde galera,
Procurei em todo lugar mas sem sucesso.
Estou fazendo um Dialog para editar um usuario mas não esta dando certo. Passo o objeto com o f:setPropertyActionListene mas ele so traz um unico objeto para todos os usuarios.
ex: tenho 10 usuarios. clico na primeira linha e ele me traz o dialog carregado com as informações do usuario, se eu fechar o dialog e tentar carregar outro usuario ele me traz o primeiro usuario. Não esta mudando de objeto
Segue codigo da view, se alguem puder me falar aonde estou errando.
Obs: Quando eu edito um usuario usando uma pagina.xhtml o objeto e carregado e edita normalmente.
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:composition template="/templates/interna.xhtml">
<ui:define name="titulo">Pesquisar Usuário</ui:define>
<ui:define name="corpo">
<p:panel id="centro" style="font-size: 13px;">
<h:form id="listagemUsuario">
<p:dataTable id="listagem" var="usuario" value="#{pessoaBean.lista}" scrollable="true" scrollHeight="400">
<p:column headerText="Nome" style=" width: 40%">
#{usuario.nome}
</p:column>
<p:column headerText="Login" style="width: 15%">
#{usuario.login}
</p:column>
<p:column headerText="Permissão" style="text-align: center; width: 15%">
<h:graphicImage library="imagens" name="pessoa_#{usuario.permissao}.png"/>
</p:column>
<p:column headerText="Status" style="text-align: center; width: 5%">
<h:commandLink action="#{pessoaBean.ativar}" >
<h:graphicImage library="imagens" name="pessoa_#{usuario.ativo}.png" />
<f:setPropertyActionListener target="#{pessoaBean.pessoa}" value="#{usuario}" />
</h:commandLink>
</p:column>
<!-- Aqui estou tentando editar por um dialog -->
<p:column headerText="Visualizar" style="text-align: center; width: 5%" >
<p:commandLink oncomplete="visualizarDialog.show()" update="@form">
<h:graphicImage library="imagens" name="visualizar_dados.png" />
<f:setPropertyActionListener target="#{pessoaBean.pessoa}" value="#{usuario}" />
</p:commandLink>
<p:dialog id="visualizarDialog" header="Dados do Usuário" widgetVar="visualizarDialog" width="400" modal="true" resizable="false">
<h:panelGrid columns="2">
<h:outputLabel value="Código: " />
<h:outputLabel value="#{usuario.codigo}" />
<h:outputLabel value="Nome: " />
<h:inputText value="#{usuario.nome}" />
<h:outputLabel value="Login: " />
<h:inputText value="#{usuario.login}" />
<h:outputLabel value="Status: " />
<h:inputText value="#{usuario.ativo}" />
<h:outputLabel value="Permissão: " />
<h:inputText value="#{usuario.permissao}"/>
<h:outputLabel value="Setor: " />
<h:inputText value="#{usuario.setor}" />
<h:outputLabel value="Cargo: " />
<h:inputText value="#{usuario.cargo}" />
<h:outputLabel value="Data Cadastro: " />
<h:outputText value="#{usuario.dataCadastro}" />
</h:panelGrid>
</p:dialog>
</p:column>
<!-- Assim consigo editar o usuario, mas carregando o objeto em uma pagina xhtml. -->
<p:column headerText="Editar" style="text-align: center; width: 10%">
<h:commandLink action="#{pessoaBean.editar}">
<h:graphicImage library="imagens" name="editar_pessoa.png" />
<f:setPropertyActionListener target="#{pessoaBean.pessoa}" value="#{usuario}" />
<f:setPropertyActionListener target="#{pessoaBean.paginaDestino}" value="/restrito/cadastro_usuario" />
</h:commandLink>
</p:column>
</p:dataTable>
</h:form>
</p:panel>
</ui:define>
</ui:composition>
</html>
Bean
@ManagedBean(name="pessoaBean")
@RequestScoped
public class PessoaBean {
private Pessoa pessoa = new Pessoa();
private List<Pessoa> lista;
private String paginaDestino;
public String salvar(){
PessoaRN pessoaRN = new PessoaRN();
this.pessoa.setDataCadastro(new Date());
this.pessoa.setAtivo(true);
pessoaRN.salvar(pessoa);
return this.paginaDestino = "pesquisa_usuario?faces-redirect=true";
}
public String ativar(){
if(this.pessoa.isAtivo())
this.pessoa.setAtivo(false);
else
this.pessoa.setAtivo(true);
PessoaRN pessoaRN = new PessoaRN();
pessoaRN.salvar(this.pessoa);
return null;
}
public Pessoa getVisualizar() {
return visualizar;
}
public void setVisualizar(Pessoa visualizar) {
this.visualizar = visualizar;
}
public List<Pessoa> getLista() {
if(this.lista == null){
PessoaRN pessoaRN = new PessoaRN();
this.lista = pessoaRN.listar();
}
return lista;
}
public void setLista(List<Pessoa> lista) {
this.lista = lista;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public String getPaginaDestino() {
return paginaDestino;
}
public void setPaginaDestino(String paginaDestino) {
this.paginaDestino = paginaDestino;
}
}
