0
Well I’m trying to get a selectOneMenu to fill another selectOneMenu and update a field, but I still don’t quite understand how to do.
classes:
package model;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "empresa")
public class Empresa implements Serializable {
    private static final long serialVersionUID = -8839523968593400725L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Integer id;
    @Column
    private String nome;
    @Column
    private String cnpj;
    @Column
    @OneToMany(mappedBy = "empresa")
    private List<Caixa> caixa;
    public Empresa(Integer id, String nome, String cnpj, List<Caixa> caixa) {
        super();
        this.id = id;
        this.nome = nome;
        this.cnpj = cnpj;
        this.caixa = caixa;
    }
    public Empresa() {
        super();
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getCnpj() {
        return cnpj;
    }
    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }
    public List<Caixa> getCaixa() {
        return caixa;
    }
    public void setCaixa(List<Caixa> caixa) {
        this.caixa = caixa;
    }
}
package model;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.validator.NotNull;
@Entity
@Table(name = "caixa")
public class Caixa {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column
    private Integer id;
    @Column
    @NotNull
    private Integer numero;
    @Column
    private String localizacao;
    @Column
    private String descricao;
    @ManyToOne
    @JoinColumn(name="id_empresa")
    private Empresa empresa;
    @OneToMany(mappedBy="caixa")
    private List<Documento> documento;
    public Caixa(Integer id, Integer numero, String localizacao, String descricao, Empresa empresa,
            List<Documento> documento) {
        super();
        this.id = id;
        this.numero = numero;
        this.localizacao = localizacao;
        this.descricao = descricao;
        this.empresa = empresa;
        this.documento = documento;
    }
    public Caixa() {
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getNumero() {
        return numero;
    }
    public void setNumero(Integer numero) {
        this.numero = numero;
    }
    public String getLocalizacao() {
        return localizacao;
    }
    public void setLocalizacao(String localizacao) {
        this.localizacao = localizacao;
    }
    public String getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public Empresa getEmpresa() {
        return empresa;
    }
    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
    public List<Documento> getDocumento() {
        return documento;
    }
    public void setDocumento(List<Documento> documento) {
        this.documento = documento;
    }
}
package model;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "documento")
public class Documento implements Serializable{
    private static final long serialVersionUID = -5578623853822576663L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column
    private Integer id;
    @Column
    private String nomeDoc;
    @Column
    private String img;
    @ManyToOne
    @JoinColumn(name = "id_caixa")
    private Caixa caixa;
    @Column
    private Date dataEntrada;
    @Column
    private Date dataSaida;
    public Documento() {
        super();
    }
    public Documento(Integer id, String nomeDoc, String img, Caixa caixa, Date dataEntrada, Date dataSaida) {
        super();
        this.id = id;
        this.nomeDoc = nomeDoc;
        this.img = img;
        this.caixa = caixa;
        this.dataEntrada = dataEntrada;
        this.dataSaida = dataSaida;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNomeDoc() {
        return nomeDoc;
    }
    public void setNomeDoc(String nomeDoc) {
        this.nomeDoc = nomeDoc;
    }
    public String getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = img;
    }
    public Caixa getCaixa() {
        return caixa;
    }
    public void setCaixa(Caixa caixa) {
        this.caixa = caixa;
    }
    public Date getDataEntrada() {
        return dataEntrada;
    }
    public void setDataEntrada(Date dataEntrada) {
        this.dataEntrada = dataEntrada;
    }
    public Date getDataSaida() {
        return dataSaida;
    }
    public void setDataSaida(Date dataSaida) {
        this.dataSaida = dataSaida;
    }
}
package manager;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import model.Empresa;
import persistence.EmpresaDao;
@ManagedBean(name = "eBean")
@ViewScoped
public class EmpresaBean {
    private Empresa empresa;
    private List<Empresa> lista;
    public EmpresaBean() {
        empresa = new Empresa();
        lista = new ArrayList<Empresa>();
    }
    public Empresa getEmpresa() {
        return empresa;
    }
    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
    public List<Empresa> getLista() {
        return lista;
    }
    public void setLista(List<Empresa> lista) {
        this.lista = lista;
    }
    public String cadastrar() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            new EmpresaDao().cadastrar(empresa);
            empresa = new Empresa();
            fc.addMessage("formCadEmp",
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "caempresa", "Empresa cadastrada com sucesso !"));
        } catch (Exception e) {
            e.printStackTrace();
            fc.addMessage("formCadEmp", new FacesMessage(FacesMessage.SEVERITY_ERROR, "caempresa",
                    "Não foi possível cadastrar a empresa !"));
        }
        return null;
    }
    public String buscar() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            EmpresaDao ed = new EmpresaDao();
            lista = ed.listar();
            fc.addMessage("buscarEmpresa",
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "buempresa", "Empresa localizada !"));
        } catch (Exception e) {
            e.printStackTrace();
            fc.addMessage("buscarEmpresa",
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "buempresa", "Empresa não encontrada !"));
        }
        return null;
    }
    public String buscarPorNome() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            EmpresaDao ed = new EmpresaDao();
            String nome = empresa.getNome();
            lista = ed.listarPorNome(nome);
            if (lista.size() == 0) {
                fc.addMessage("buscarEmpresa",
                        new FacesMessage(FacesMessage.SEVERITY_WARN, "bunempresa", "Nenhuma empresa cadastrada !"));
            }
        } catch (Exception e) {
            e.printStackTrace();
            fc.addMessage("buscarEmpresa",
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "bunempresa", "Empresa não Encontrada !"));
        }
        return null;
    }
    public void excluir() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            EmpresaDao ed = new EmpresaDao();
            ed.excluir(empresa);
            lista = new ArrayList<Empresa>();
            empresa = new Empresa();
            fc.addMessage("buscarEmpresa",
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "exempresa", "Empresa excluída com sucesso !"));
        } catch (Exception e) {
            e.printStackTrace();
            fc.addMessage("buscarEmpresa",
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "exempresa", "Não foi possível excluir a empresa !"));
        }
    }
    public void editar() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            EmpresaDao ed = new EmpresaDao();
            ed.atualizar(empresa);
            fc.addMessage("formDetalhesEmpresa",
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "edempresa", "Dados atualizados com sucesso !"));
        } catch (Exception e) {
            e.printStackTrace();
            fc.addMessage("formDetalhesEmpresa", new FacesMessage(FacesMessage.SEVERITY_ERROR, "edempresa",
                    "Não foi possível atualizar os dados !"));
        }
    }
    public String detalhes() {
        try {
            Integer id = empresa.getId();
            empresa = new EmpresaDao().buscarPorId(id);
            FacesContext.getCurrentInstance().getExternalContext().getFlash().put("e", empresa);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "detalhesEmpresa";
    }
    @PostConstruct
    public void init() {
        if (FacesContext.getCurrentInstance().getExternalContext().getFlash().get("e") != null) {
            empresa = (Empresa) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("e");
        }
    }
}
package manager;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import model.Caixa;
import model.Empresa;
import persistence.CaixaDao;
import persistence.EmpresaDao;
@ManagedBean
@ViewScoped
public class CaixaBean {
    private Caixa caixa;
    private Empresa empresa;
    private List<Caixa> listaCaixa;
    private EmpresaDao empresaDao;
    private CaixaDao caixaDao;
    private List<Empresa> empresas;
    @PostConstruct
    public void inicia() {
        caixa = new Caixa();
        empresa = new Empresa();
        listaCaixa = new ArrayList<Caixa>();
        this.empresaDao = new EmpresaDao();
        this.caixaDao = new CaixaDao();
        try {
            this.empresas = this.empresaDao.listar();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void obterEmpresaCompleta() {
        try {
            if (this.empresa != null && this.empresa.getId() != null) {
                this.empresa = this.empresaDao.buscarPorId(this.empresa.getId());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void inserirCaixa() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            this.caixa.setEmpresa(this.empresa);
            validaInsercao(caixa);
            this.caixaDao.cadastrar(caixa);
            fc.addMessage("formcadcaixa",
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "cadcaixa", "Caixa cadastrada com sucesso !"));
        } catch (Exception e) {
            fc.addMessage("formcadcaixa",
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "cadcaixa", "Caixa não cadastrada !"));
        }
    }
    private void validaInsercao(Caixa caixa) throws Exception {
        List<Caixa> caixas = this.caixaDao.listarPorNumeroEEmpresa(caixa.getNumero(), caixa.getEmpresa().getId());
        if (caixas != null && caixas.size() > 0) {
            throw new Exception();
        }
    }
    public void editar() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            this.caixa.setEmpresa(this.empresa);
            this.caixaDao.atualizar(caixa);
            fc.addMessage("formdetalhescaixa",
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "edcaixa", "Alterações salvas com sucesso !"));
        } catch (Exception e) {
            e.printStackTrace();
            fc.addMessage("formdetalhescaixa", new FacesMessage(FacesMessage.SEVERITY_ERROR, "edcaixa",
                    "Não foi possível salvar as alterações !"));
        }
    }
    public void excluir() {
        FacesContext fc = FacesContext.getCurrentInstance();
        try {
            fc.addMessage("", new FacesMessage(FacesMessage.SEVERITY_INFO, "excaixa", "Caixa excluída com sucesso !"));
        } catch (Exception e) {
            e.printStackTrace();
            fc.addMessage("",
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "excaixa", "Não foi possível excluir a caixa !"));
        }
    }
    public Caixa getCaixa() {
        return caixa;
    }
    public void setCaixa(Caixa caixa) {
        this.caixa = caixa;
    }
    public Empresa getEmpresa() {
        return empresa;
    }
    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
    public List<Caixa> getListaCaixa() {
        return listaCaixa;
    }
    public void setListaCaixa(List<Caixa> listaCaixa) {
        this.listaCaixa = listaCaixa;
    }
    public List<Empresa> getEmpresas() {
        return empresas;
    }
    public void setEmpresas(List<Empresa> empresas) {
        this.empresas = empresas;
    }
}
package manager;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import model.Caixa;
import model.Documento;
import model.Empresa;
import persistence.CaixaDao;
import persistence.DocumentoDao;
import persistence.EmpresaDao;
@ManagedBean(name = "docBean")
@ViewScoped
public class DocumentoBean {
    private Empresa empresa;
    private Caixa caixa;
    private Documento documento;
    private List<Empresa> listEmpresa;
    private List<Caixa> listCaixa;
    private List<Documento> listDocumento;
    private EmpresaDao empresaDao;
    private CaixaDao caixaDao;
    private DocumentoDao documentoDao;
    @PostConstruct
    public void inicia() {
        empresa = new Empresa();
        caixa = new Caixa();
        documento = new Documento();
        this.empresaDao = new EmpresaDao();
        this.caixaDao = new CaixaDao();
        this.documentoDao = new DocumentoDao();
        try {
            this.listEmpresa = this.empresaDao.listar();
            this.listDocumento = this.documentoDao.listar();
            this.listCaixa = this.caixaDao.listar();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void obterEmpresaCompleta() {
        try {
            if (this.empresa != null && this.empresa.getId() != null) {
                this.empresa = this.empresaDao.buscarPorId(this.empresa.getId());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public Empresa getEmpresa() {
        return empresa;
    }
    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
    public Caixa getCaixa() {
        return caixa;
    }
    public void setCaixa(Caixa caixa) {
        this.caixa = caixa;
    }
    public Documento getDocumento() {
        return documento;
    }
    public void setDocumento(Documento documento) {
        this.documento = documento;
    }
    public List<Empresa> getListEmpresa() {
        return listEmpresa;
    }
    public void setListEmpresa(List<Empresa> listEmpresa) {
        this.listEmpresa = listEmpresa;
    }
    public List<Caixa> getListCaixa() {
        return listCaixa;
    }
    public void setListCaixa(List<Caixa> listCaixa) {
        this.listCaixa = listCaixa;
    }
    public List<Documento> getListDocumento() {
        return listDocumento;
    }
    public void setListDocumento(List<Documento> listDocumento) {
        this.listDocumento = listDocumento;
    }
}
<!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: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">
<ui:composition template="/admin/layout.xhtml">
    <ui:define name="conteudo">
        <p:dialog header="INSERIR DOCUMENTOS" visible="true">
            <h:form id="formcaddoc">
                <h:panelGrid columns="1">
                    <h:outputText value="Empresa" />
                    <p:selectOneMenu style="width: 475px" id="empresa"
                        value="#{docBean.empresa.id}" valueChangeListener="#{docBean.obterEmpresaCompleta()}">
                        <f:selectItem itemLabel="--SELECIONE--" itemValue="#{null}" />
                        <f:selectItems value="#{docBean.listEmpresa}" var="empresa"
                            itemLabel="#{empresa.nome}" itemValue="#{empresa.id}" />
                        <p:ajax event="itemSelect"
                            listener="#{docBean.obterEmpresaCompleta()}" update="cnpj" />
                    </p:selectOneMenu>
                    <h:panelGrid columns="2">
                        <h:panelGrid columns="1">
                            <h:outputText value="CNPJ" />
                            <p:inputMask mask="99.999.999/9999-99" style="text-align: center"
                                id="cnpj" value="#{docBean.empresa.cnpj}" />
                        </h:panelGrid>
                        <h:panelGrid columns="1">
                            <h:outputText value="Caixa" />
                            <p:selectOneMenu style="width: 120px" id="caixa"
                                value="#{docBean.caixa.numero}">
                                <f:selectItem itemLabel="--SELECIONE--" itemValue="#{null}" />
                                <f:selectItems value="#{docBean.listCaixa}" var="cx"
                                    itemLabel="#{cx.numero}" itemValue="#{cx.id}" />
                            </p:selectOneMenu>
                        </h:panelGrid>
                    </h:panelGrid>
                    <h:outputText value="Descrição/Etiqueta Caixa" />
                    <p:inputTextarea style="width: 500px" />
                    <p:separator />
                    <h:outputText value="Documento" />
                    <p:inputText style="width: 500px" />
                    <h:panelGrid columns="3">
                        <h:panelGrid columns="1">
                            <h:outputText value="Arquivo" style="text-align: center" />
                            <p:commandButton value="Anexar" style="width: 145px"></p:commandButton>
                        </h:panelGrid>
                        <h:panelGrid columns="1">
                            <h:outputText value="Data Arquivamento" />
                            <p:inputText style="width: 160px ;text-align: center" />
                        </h:panelGrid>
                        <h:panelGrid columns="1">
                            <h:outputText value="Data Expurgo" />
                            <p:inputText style="width: 160px ;text-align: center" />
                        </h:panelGrid>
                    </h:panelGrid>
                    <h:panelGrid width="100%" style="text-align: right">
                        <p:commandButton value="Inserir">
                        </p:commandButton>
                    </h:panelGrid>
                </h:panelGrid>
            </h:form>
        </p:dialog>
    </ui:define>
</ui:composition>
</html>
I have a selectOneMenu that looks for a list of registered companies and when selecting the desired company it updates the CNPJ field. Now I would like when selecting the company another selectOneMenu to search only the registered boxes for that company.