Ao clicar no botão dialog vem vazio Primefaces 3.3.1[RESOLVIDO]

Blz amigos estou com um problema, o datatable esta sendo preenchido (estou usando Basic row selection) quando acontece o evento o dialog vem vazio.

@Named
@RequestScoped
public class CargoFace extends BasicCDIBean<Cargo> implements Serializable{

	private static final long serialVersionUID = 1L;

	@Inject
	private CargoSession session;
	private List<Cargo> list;
	private Cargo selectedCargo;
	private CargoModel cargoModel;
	
	public CargoFace() {
		setSelectedBean(new Cargo());
		
		selectedCargo = new Cargo(); 
				
	}
	
	public String saveCargo(){
		session.save(getSelectedBean());
		return doListCargo();
	}
	
	 public String doListCargo() {
	        list = session.getAllCargo();
	        cargoModel = new CargoModel(list);
	        return "/list.jsf";
	 }
	 
	 public List<Cargo> doListCargoSemR() {
	        if(session!=null){
		    list = session.getAllCargo();
	        return list;
	        }
	        return null;
	 }
	 
	 public String addFunc(){
		 return "/addfunc.jsf";
	 }

	public List<Cargo> getList() {
		return list;
	}

	public void setList(List<Cargo> list) {
		this.list = list;
	}

	public Cargo getSelectedCargo() {
		return selectedCargo;
	}

	public void setSelectedCargo(Cargo selectedCargo) {
		this.selectedCargo = selectedCargo;
	}

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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Cargos</title>
    </h:head>
    <h:body>
   <p:panel header="Lista de Cargos"/>  
         <h:form id="form" >
         <h:messages/>
          <p:growl id="growl" showDetail="true"/>  
         <p:dataTable id="dataTable" var="item" value="#{cargoFace.list}"  paginator="true" rows="10" >
    
         
             <p:column headerText="Cod">
               #{item.id}
             </p:column>
             <p:column headerText="Nome">
               #{item.nome}
             </p:column>
             <p:column style="width:40px">  
             <h:panelGrid columns="3" styleClass="actions" cellpadding="2">  
                 <p:commandButton id="selectButton" update=":form:display" oncomplete="cargoDialog.show()" icon="ui-icon-search" title="View">  
                     <f:setPropertyActionListener value="#{item}" target="#{cargoFace.selectedBean}" />  
                 </p:commandButton>  
             </h:panelGrid>  
        </p:column>  
         </p:dataTable>
          <p:dialog id="dialog" header="Cargo Detail" widgetVar="cargoDialog" resizable="false"  
                showEffect="explode" hideEffect="explode">  
  
        <h:panelGrid id="display" columns="2" cellpadding="4">  
  
            <f:facet name="header">  
                <!-- <p:graphicImage value="/images/cars/#{tableBean.selectedCar.manufacturer}.jpg"/>  -->
            </f:facet>  
  
            <h:outputText value="Id:" />  
            <h:outputText value="#{cargoFace.selectedBean.id}" />  
  
            <h:outputText value="Nome:" />  
            <h:outputText value="#{cargoFace.selectedBean.nome}" />  
  
            
        </h:panelGrid>  
    </p:dialog>         
         </h:form>
        
    </h:body>
</html>

Boa noite,

O seu dialog está completamente vazio ou apenas os dados do seu ManagedBean não estão sendo carregados?

Cara, olhando teu código, vi que tá tudo no mesmo form, de tal modo que você não precisa dar update=":form:display". Tenta apenas update=“display”.

Abraços

ao colocar display deu esse erro

 javax.faces.FacesException: Cannot find component with identifier "display" referenced from "form:dataTable:0:selectButton"

Não está completamente vazio os dados do meu MB q não esta vindo

Volte o display para como antes, e teste alterando o escopo do seu MB para SessionScoped.

Poste o resultado.

na mesma

Debugue seu ManagedBean, veja se os valores do bean estão corretos.

cara funcionou era @SessionScoped eu não testei direito vlw brother, só que estou com uma dúvida quando esta nesse escopo, quando zera a seção, pra usar esse escopo tenho q implementar login e talz.

Não necessariamente,

Caso vc implemente autenticação com o JAAS por exemplo, no fim da sessão, terá que autenticar novamente.

o porq dessa dúvida quando vou cadastrar um novo cargo o id do cargo q selecionei na datatable fica retido na sessão ele tenta salvar com o msm id. como fosse uma edição.

Quando vc for cadastrar um novo item, vc tem que criar um novo objeto. Ou então, não utilize o selected para referenciar esse objeto. Utilize um novoObjeto por exemplo.

Ao menos é assim que eu faço :slight_smile:

vlw isso msm vc esta certo. vlw msm tiago, muito obrigado.

Imagina!

Edite o título desse post, coloque [RESOLVIDO] no início.

Abraço e sucesso!

Olá amigo dcorteztec,

Você poderia mostrar a sua classe genérica “BasicCDIBean”, para eu dar uma olhada. pois sempre tive uma dúvida em relação ao getSelected().

Obrigado,

abraço

Gustavo

Opa eu estive vendo a discursão de vcs e estou passando pelo mesmo problema.

Eu cheguei a colocar no meu bean a annotation @SessionScoped no meu bean e pelo faces- config porém ainda o dialog vem vazio.
Tbm estou utilizando a versão do primefaces 3.3.1

Vcs poderiam me ajudar por favor…

Segue abaixo meu codigo


@SessionScoped
public class GrupoController {
	
	public List<Grupo> listaGrupo;
	
	public Grupo grupoSelecionado;
	

Faces config





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

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
	version="2.0">
	<managed-bean>
		<managed-bean-name>grupoController</managed-bean-name>
		<managed-bean-class>br.com.rambeg.cei.controller.GrupoController</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>


</faces-config>

<!DOCTYPE composition 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><ui:insert name="title">Manter Grupo</ui:insert></title>
         <link type="text/css" rel="stylesheet" href="cupertino.css" />       
    </h:head>
	
	<h:body>
	 
	 <!--   <ui:composition template="/templates/layoutDefault/layout.xhtml">-->
	 	
	 	<!-- <ui:define name="content"> -->
	 
	 		<h:form id="formPesquisa">
	 			
	 			<h:panelGrid columns="1"  >	
					<h:outputText value="Pesquisar Por:" /> 
					<p:selectOneMenu id="opcaoCombo" value="" effect="drop"  >
				  		<f:selectItem itemLabel="Todos" itemValue="0" />  
    	      	  		<f:selectItem itemLabel="Código" itemValue="1" />  
        	      		<f:selectItem itemLabel="Nome Fantasia" itemValue="2" />  
			     	</p:selectOneMenu>		     	
		        </h:panelGrid>
	        	
	        	<p:inputText id="inserirParametro" size="43" value="#{grupoController.valorPesquisa}"  label="Pesquisar" title="Pesquisar" />
				<p:spacer width="15"/>
				<p:commandButton value="Pesquisar" style="height:28px;" update="formPesquisa" action="#{grupoController.busca}"  />
	        	<br/>
	        	<br/>	     
	        	
	        	
	        	<p:dataTable id="tabelaPesquisa" var="grupo" value="#{grupoController.listaGrupo}"
		    			 emptyMessage="Grupo não encontrado" paginator="true" rows="6" update="tabelaPesquisa" >
		 		
		 			<p:column headerText="Código" style="width:10px" >
           		    	<h:outputText value="#{grupo.id}" />
                	</p:column>
                
                	<p:column headerText="Nome Fantasia"  style="width:150px">
                    	 <h:outputText value="#{grupo.nomeFantasia} " />
                	</p:column>
                
                	<p:column headerText="CNPJ" style="width:120px" >
                    	<h:outputText value="#{grupo.cnpj}" />
                	</p:column>
                
                	<p:column headerText="Tipo Grupo" style="width:120px" >
                    	<h:outputText value="#{grupo.tipoGrupo}" />
                	</p:column>
					                
					<p:column headerText="Status" style="width:50px">
                    	<h:outputText value="#{grupo.status}" />
            	 	</p:column>
		        
		           	<p:column style="width:100px"  >
	             
	            		<h:panelGrid columns="3" columnClasses="border" style="width:100px">
					            
	                		<p:commandButton value="Detalhes" update=":formPesquisa:display" title="Detalhes" oncomplete="grupoDialog.show()">
		                		<f:setPropertyActionListener value="#{grupo}" target="#{grupoController.grupoSelecionado}" />
		                	</p:commandButton>		                 
		                 
		                	<p:commandButton value="Editar" title="Editar"  actionListener="#{grupoController.editar}" >
		                    	<f:setPropertyActionListener value="#{grupo}" target="#{grupoController.grupoSelecionado}" />
		                	</p:commandButton>
		       
		                	<p:commandButton value="Remover" title="Desativar" oncomplete="desativar.show()" >
		                    	 <f:setPropertyActionListener value="#{grupo}" target="#{grupoController.grupoSelecionado}"/>		                     
		              		</p:commandButton>  
		              	                   
	             		</h:panelGrid>             
	            
	      	  		</p:column>
		
		    	</p:dataTable>  		       
		       
		    	<p:dialog header="Detalhes do Grupo" widgetVar="grupoDialog" resizable="false" id="grupDialog"
		              width="350" showEffect="clip" hideEffect="clip" modal="true">
		
		    		<h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">
			         
		        		<h:outputText value="Código" />		            
		            	<h:panelGroup>			            
		       				<h:outputText value="#{grupoController.grupoSelecionado.id}" style="font-weight:bold"/>	                
		            	</h:panelGroup>		
		            
		            	<h:outputText value="Nome Fantasia" />
		            	<h:panelGroup>		            
		              		<h:outputText value="#{grupoController.grupoSelecionado.nomeFantasia}" style="font-weight:bold"/>            
		            	</h:panelGroup>
		
		            	<h:outputText value="CNPJ" />		
		            	<h:panelGroup>
		              		<h:outputText value="#{grupoController.grupoSelecionado.cnpj}" style="font-weight:bold"/>               
		            	</h:panelGroup>
		            
		             	<h:outputText value="Inscrição Estadual" />		
		             	<h:panelGroup>
		                	<h:outputText value="#{grupoController.grupoSelecionado.inscEstadual}" style="font-weight:bold"/>	               
		            	</h:panelGroup>
		        		            
		        	</h:panelGrid>
		
		  	  </p:dialog>	     	
	 	
	 		</h:form>	

Bom dia,

Voltei só pra falar que consegui resolver meu problema… caso alguém tenha o problema é q no

<p:selectOneMenu id="opcaoCombo" value="" effect="drop"  >  

o value está vazio ai quando eu tentava fazer alguma requisição no form ele não pegava o valor do objeto…
O erro é besta…