Primefaces - datatable seguido por outro datatable

0 respostas
G

Explicando oque estou tentando fazer.

Gero uma lista de empresas com um datatable, ao selecionar uma empresa, ele abre um novo datatable com os funcionários vinculados a empresa selecionada. Até ai está tudo certo, porem estou querendo é que no datatable dos funcionários, seja possível abrir um dialog com os detalhes do funcionário.

Porem não está está funcionando esse novo selection, ele mantem o selection da primeira datatable e não salva o selection para a segunda datatable. Creio que seja possivel resolver com um update, mas estou perdido nessa parte.

segue os codigos

primeiro datatable

<p:dataTable id="EmpresaTable" var="result"
						value="#{empresaController.empresaLista}" rowKey="#{result.idEmpresa}" selection="#{administradorController.selectedEmpresa}"
						 selectionMode="single" paginator="true" rows="6" >
						  
	        					
							 <f:facet name="header">  
			           			 Clique sobre a promoção que deseja ativar
			        		</f:facet>  
			        		
						<p:column exportable="false">
							<p:rowToggler/>
						</p:column>
						
							<p:column sortBy="#{result.idEmpresa}">
			
							<f:facet name="header">
								<h:outputText value="id" />
							</f:facet>
							<h:outputText value="#{result.idEmpresa}" />
						</p:column>
						
						<p:column sortBy="#{result.nome}" exportable="false">
			
							<f:facet name="header">
								<h:outputText value="nome" />
							</f:facet>
							<h:outputText value="#{result.nome}" />
						</p:column>
						
						<p:column sortBy="#{result.cnpj}">
			
							<f:facet name="header">
								<h:outputText value="pontos" />
							</f:facet>
							<h:outputText value="#{result.cnpj}" />
						</p:column>
						
								
						<f:facet name="footer">
							<p:commandButton action="#{administradorController.detalhaEmpresa}" value="confirmar"  />
						</f:facet>
				
					</p:dataTable> 
				</h:form>

segundo datatable

<h:form id="formFunc">
					<p:dataTable id="dataFunc" var="func" value="#{administradorController.listaFuncionarioEmpresa}" rowKey="#{func.idFuncionario}" selection="#{administradorController.selectedFuncionario}"
						selectionMode="single" paginator="true"  >
						
						<p:column sortBy="#{func.email}">
						<f:facet name="header">
							<h:outputText value="email" />
						</f:facet>
							<h:outputText value="#{func.email}" />
						</p:column>
						<p:column sortBy="#{func.idFuncionario}">
						<f:facet name="header">
							<h:outputText value="id" />
						</f:facet>
							<h:outputText value="#{func.idFuncionario}" />
						</p:column>
						
						<f:facet name="footer">
							<p:commandButton  value="visualizar" onclick="funcionario.show();" type="button"  />
						</f:facet>
						
					</p:dataTable>
					
					<p:dialog id="dialog" widgetVar="funcionario" >
						<h:panelGrid id="display" columns="2">
							<h:outputText value="email:"/>
							<h:outputText value="#{administradorController.selectedFuncionario.email}"/>	
						</h:panelGrid>
					</p:dialog>		
				</h:form>

Bean

package br.com.fideliza.controller;

import java.util.List;

import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.primefaces.component.tabview.Tab;
import org.primefaces.event.TabChangeEvent;

import br.com.fideliza.DAO.AdministradorDAO;
import br.com.fideliza.DAO.EmpresaDAO;
import br.com.fideliza.DAO.FuncionarioDAO;
import br.com.fideliza.DAO.PromocaoDAO;
import br.com.fideliza.model.Administrador;
import br.com.fideliza.model.Empresa;
import br.com.fideliza.model.Funcionario;
import br.com.fideliza.model.Promocao;

public class AdministradorController {
	
	private Administrador admin;
	private AdministradorDAO adminDAO;
	private Empresa empresa;
	private EmpresaDAO empresaDAO;
	private Empresa selectedEmpresa;
	private FuncionarioDAO funcionarioDAO;
	private Funcionario funcionario;
	private Funcionario selectedFuncionario;
	private Promocao promocao;
	private Promocao selectedPromocao;
	private PromocaoDAO promocaoDAO;
	private DataModel<Funcionario> listaFuncionarioEmpresa;
	private DataModel<Promocao> listaPromocaoEmpresa;

	
	public AdministradorController(){
		this.admin = new Administrador();
		this.adminDAO = new AdministradorDAO();
		this.empresa = new Empresa();
		this.empresaDAO = new EmpresaDAO();
		this.funcionarioDAO = new FuncionarioDAO();
		this.promocaoDAO = new PromocaoDAO();
	}
	
	public String ativarEmpresa (){
		
		empresa = selectedEmpresa;
		empresa.setStatus(true);
		empresa.setNovaEmpresa(false);
		
		empresaDAO.ativaEmpresa(empresa);
		
		return "ativarEmpresa";
	}
	
	public String detalhaEmpresa(){
			
		empresa = empresaDAO.BuscaPorId(selectedEmpresa.getIdEmpresa());
		
		
		return "detalhaEmpresa";
		
	}
	public String detalhaFuncionario(){
		
		funcionario = funcionarioDAO.buscaPorId(selectedFuncionario.getIdFuncionario());
		
		return "detalhaFuncionario";
		
	}
	
	public void detalhaPromocao(){
		
		promocao = promocaoDAO.buscaPorId(selectedPromocao.getIdPromocao());
		
	}
	
	public void editaEmpresa() {
		
		empresaDAO.editaEmpresa(empresa);

	}
	
	public void onTabChange(TabChangeEvent event){
		event.getTab();
	}

	//get e set
	
	public Empresa getSelectedEmpresa() {
		return selectedEmpresa;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public Promocao getPromocao() {
		return promocao;
	}

	public void setPromocao(Promocao promocao) {
		this.promocao = promocao;
	}

	public Promocao getSelectedPromocao() {
		return selectedPromocao;
	}

	public void setSelectedPromocao(Promocao selectedPromocao) {
		this.selectedPromocao = selectedPromocao;
	}

	public Funcionario getSelectedFuncionario() {
		return selectedFuncionario;
	}

	public void setSelectedFuncionario(Funcionario selectedFuncionario) {
		this.selectedFuncionario = selectedFuncionario;
	}

	public DataModel<Promocao> getListaPromocaoEmpresa() { // lista promoções de uma empresa
		if(listaPromocaoEmpresa == null){
			List<Promocao> promocao = new PromocaoDAO().listaPorEmpresa(selectedEmpresa);
			listaPromocaoEmpresa = new ListDataModel<Promocao>(promocao);
		}
		return listaPromocaoEmpresa;
	}

	public void setListaPromocaoEmpresa(DataModel<Promocao> listaPromocaoEmpresa) {
		this.listaPromocaoEmpresa = listaPromocaoEmpresa;
	}

	public DataModel<Funcionario> getListaFuncionarioEmpresa() { //lista funcionarios de uma empresa
		
		if(listaFuncionarioEmpresa == null){
			
			List<Funcionario> funcionario = new FuncionarioDAO().BuscaPorEmpresa(selectedEmpresa.getIdEmpresa());
			listaFuncionarioEmpresa = new ListDataModel<Funcionario>(funcionario);
		}
		return listaFuncionarioEmpresa;
	}

	public void setListaFuncionarioEmpresa(
			DataModel<Funcionario> listaFuncionarioEmpresa) {
		this.listaFuncionarioEmpresa = listaFuncionarioEmpresa;
	}

	public void setSelectedEmpresa(Empresa selectedEmpresa) {
		this.selectedEmpresa = selectedEmpresa;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	

}
Criado 30 de outubro de 2012
Respostas 0
Participantes 1