Olá pessoal.
Estou enfrentando problemas para fazer 3 combos aninhados.
São eles. UF -> Cidade -> Unidades (Empresas)
Consegui fazer o combo Uf para Cidade, mas de Cidade para Unidade não dá. Procurei muito realmente mas mesmo assim não consegui, por isso estou pedindo ajuda no forum.
Codigos:
ManageBean:
@Named(value = "memoMNG")
@RequestScoped
public class MemorandoMNG implements Serializable {
@EJB
MemorandoDAORemote dao;
private String id;
private String numeroNacional;
private String assunto;
private String status;
private String texto;
private Memorando memoPai;
// destinatario
private Uf comboUf;
private Cidade cidadeTemp;
private Cidade comboCidade;
private Unidade comboUnidade;
private SelectOneMenu cmbCidade;
private SelectOneMenu cmbUnidade;
public List<Uf> getListaComboUf() {
List<Uf> lista = new ArrayList<Uf>();
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
UfMNG neededBean = (UfMNG) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "ufMNG");
for (Uf uf : neededBean.getListaTodos()) { // AQUI LISTA TODOS MEUS UFS
lista.add(uf);
}
return lista;
}
public List<Cidade> getListaComboCidade() {
List<Cidade> lista = new ArrayList<Cidade>();
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
CidadeMNG cidadeMNG = (CidadeMNG) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "cidadeMNG");
if (!this.cmbCidade.isDisabled()) {
for (Cidade cid : cidadeMNG.getListaPorUf(comboUf)) { // AQUI LISTA SOMENTE AS CIDADES QUE TEM O UF COMO SEU "PAI"
lista.add(cid);
}
}
return lista;
}
public void atualizaComboCidade() {
this.cmbCidade.setDisabled(false);
System.out.println("--------%%%%%%%");
System.out.println(comboUf);
}
public List<Unidade> getListaComboUnidade() {
List<Unidade> lista = new ArrayList<Unidade>();
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
UnidadeMNG unidadeMNG = (UnidadeMNG) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "unidadeMNG");
if (!this.cmbUnidade.isDisabled()) {
for (Unidade uni : unidadeMNG.getListaPorCidade(comboCidade)) {
// for (Unidade uni : unidadeMNG.getListaTodos()) {
lista.add(uni);
}
}
return lista;
}
public void atualizaComboUnidade() {
this.cmbUnidade.setDisabled(false);
System.out.println(" cidade-------- ####");
System.out.println(comboCidade);
}
// ... gets sets metodos diversos
XHTML:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<ui:composition template="/WEB-INF/templates/default.xhtml">
<ui:define name="conteudo">
<f:view contentType="text/html" encoding="UTF-8">
<h:form id="formMemo">
<p:fieldset legend="Criar Memorando" style="width: 50%">
<p:selectOneMenu id="cmbUf" value="#{memoMNG.comboUf}"
converter="ufConverter" style="width: 160px; height: 22px">
<f:selectItems value="#{memoMNG.listaComboUf}" var ="vCmbUf"
itemLabel="#{vCmbUf.nome}" itemValue="#{vCmbUf}"/>
<p:ajax update="cmbCidade" listener="#{memoMNG.atualizaComboCidade}" immediate="true" />
</p:selectOneMenu>
<p:selectOneMenu id="cmbCidade" disabled="true" value="#{memoMNG.comboCidade}"
converter="cidadeConverter" binding="#{memoMNG.cmbCidade}" style="width: 160px; height: 22px">
<f:selectItems value="#{memoMNG.listaComboCidade}" var ="vCmbCid"
itemLabel="#{vCmbCid.nome}" itemValue="#{vCmbCid}"/>
<p:ajax update="cmbUnidade" listener="#{memoMNG.atualizaComboUnidade}" immediate="true"/>
</p:selectOneMenu>
<p:selectOneMenu id="cmbUnidade" disabled="true" value="#{memoMNG.comboUnidade}"
converter="unidadeConverter" binding="#{memoMNG.cmbUnidade}" style="width: 160px; height: 22px">
<f:selectItems value="#{memoMNG.listaComboUnidade}" var ="vCmbUni"
itemLabel="#{vCmbUni.nome}" itemValue="#{vCmbUni}"/>
</p:selectOneMenu>
</p:fieldset>
</h:form>
</f:view>
</ui:define>
</ui:composition>
</html>
Não funciona quando faço para a UNIDADE.
Alguem tem alguma dica?
Obrigado

