Well I'm trying to get a selectOneMenu to populate another selectOneMenu and update a field, but I still do not quite understand how to do it.
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 searches a list of registered companies and when selecting the desired company it updates the CNPJ field. Now I would like that when selecting the company another selectOneMenu would search only the registered boxes for that company.