[NAO RESOLVIDO]Combos aninhados

7 respostas
jean.ufam

Ola pessoal, obrigado aos que puderam me ajudar. Eu consegui desenvolver alguma coisa mas não esta populando o combo do setor … alguem pode me ajudar ?

BEAN

private SelectItem[] deps;

   public SelectItem[] getListPredios() throws ClassNotFoundException, SQLException {
        List<Predio> lp = pDAO.getAllPredios();
        List<SelectItem> itens = new ArrayList<SelectItem>(lp.size());
        for (Predio p : lp) {
            itens.add(new SelectItem(p.getId(), p.getNome()));
        }
        return itens.toArray(new SelectItem[itens.size()]);
    }

    public SelectItem[] getDepByPredios(int ID) throws SQLException {
        List<Setor> deps = sDAO.getSetorDoPredio(ID);
        List<SelectItem> itens = new ArrayList<SelectItem>(deps.size());

        for (Setor s : deps) {
            itens.add(new SelectItem(s.getId(), s.getNome()));
        }// for end
        return itens.toArray(new SelectItem[itens.size()]);
    }

    public void actionCarregarEstados() throws SQLException {
        this.deps = getDepByPredios(getManifest().getSetor().getId());
        System.out.println(deps);
    }

    public SelectItem[] getDeps() {
        return deps;
    }

    public void setDeps(SelectItem[] deps) {
        this.deps = deps;
    }

Codigo xhtml … O que ta faltando aki no xhtml pra ele funcionar ???

<h:form>
            <p:panel header="Predio/Setor Combo" style="width:550px;">
                <h:panelGrid columns="2">
                    <h:outputLabel value="Comarca:"/>		
                    <h:selectOneMenu value="#{manifestacaoBean.manifest.predio.id}" required="true" >
                        <f:selectItem itemLabel="Selecione o Comarca" itemValue="Nenhum" />
                        <f:selectItems value="#{manifestacaoBean.listPredios}" />
                        <p:ajax update="depmets" listener="#{manifestacaoBean.actionCarregarEstados}" />
                    </h:selectOneMenu>

                    <h:outputLabel value="Setor:">
                        <h:selectOneMenu id="depmets" value="#{manifestacaoBean.manifest.setor.id}">
                            <f:selectItem itemLabel="Selecione o setor" itemValue="Nenhum" />
                            <f:selectItems value="#{manifestacaoBean.deps}"/>
                        </h:selectOneMenu>
                    </h:outputLabel>
                </h:panelGrid>
            </p:panel>
        </h:form>

7 Respostas

pgioseffi

Pelo que eu entendi você tem um combo e ao clicar em uma opção vc manda o outro combo se refazer, certo?

Cara, eu se fosse você adicionaria o A4J no teu projeto que é um framework de ajax maneiro pra JSF.

luiz_renato

jean,

Aqui http://www.algaworks.com/downloads/apostilas/algaworks-dwjsf-desenvolvimento-web-com-javaserver-faces-2a-edicao.pdf tem uma apostila que uma parte de captura de eventos de valor fala sobre isso. Só lembrando que nesta apostila a versão utilizada do JSF é 1.2 .

jean.ufam

luiz_renato:
jean,

Aqui http://www.algaworks.com/downloads/apostilas/algaworks-dwjsf-desenvolvimento-web-com-javaserver-faces-2a-edicao.pdf tem uma apostila que uma parte de captura de eventos de valor fala sobre isso. Só lembrando que nesta apostila a versão utilizada do JSF é 1.2 .

Migaum, pow a apostila é otima … :slight_smile:

agora eu tow com esse problema … so falta um poucoo

public void loadDepartment(ValueChangeEvent e) throws ClassNotFoundException, SQLException {
        String cod = e.getNewValue().toString();
        List&lt;Setor&gt; lp = sDAO.getSetorDoPredio(cod);
        dep = new ArrayList&lt;SelectItem&gt;(lp.size());
        for (Setor s : lp) {
            dep.add(new SelectItem(s.getId(), s.getNome()));
        }
    }
&lt;h:panelGrid border="0" columns="2" width="500" cellpadding="1" cellspacing="2"&gt;

                &lt;h:outputLabel value="Comarca:"/&gt;		
                &lt;h:selectOneMenu value="#{manifestacaoBean.manifest.predio.id}" valueChangeListener="#{manifestacaoBean.loadDepartment}" required="true" &gt;
                    &lt;f:selectItems value="#{manifestacaoBean.listPredios}" /&gt;
                    &lt;f:ajax event="change" render="setores"
                &gt;&lt;/h:selectOneMenu&gt;

                &lt;h:outputLabel value="Setor:" /&gt;
                &lt;h:selectOneMenu id="setores" required="true" &gt;
                    &lt;f:selectItems value="#{manifestacaoBean.dep}" /&gt;
                &lt;/h:selectOneMenu&gt;
                
            &lt;/h:panelGrid&gt;
jean.ufam

pgioseffi:
Pelo que eu entendi você tem um combo e ao clicar em uma opção vc manda o outro combo se refazer, certo?

Cara, eu se fosse você adicionaria o A4J no teu projeto que é um framework de ajax maneiro pra JSF.

Cara valeu amigo !!! Onde eu pego esse Framework…

jean.ufam

Eae ??? alguem tem alguma ideia ???/

pgioseffi

O A4J vem com o RichFaces

Qual é o problema que está ocorrendo naqueles códigos que você botou depois?

jean.ufam

pgioseffi:
O A4J vem com o RichFaces

Qual é o problema que está ocorrendo naqueles códigos que você botou depois?

Ele nao popula o combo DEPARTAMENTO. Tipo eu escolho o PREDIO e ele nao me aponta o departamento …
tem alguma ideia do que seja ???

Criado 10 de agosto de 2011
Ultima resposta 10 de ago. de 2011
Respostas 7
Participantes 3