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;
}
}