F:ajax esta renderizando na hora errada por causa do ActionListener

0 respostas
gilbueno

Boa tarde, estou com um problema na renderização do meu componenete JSF
antes de eu usar um Timer estava funcionando perfeitamente, mas agora ele
esta renderizando apartir do request anterior porque ele pega o valor do atributo do request anterior

acho que ele está renderizando antes de acabar o método, olha o meu Bean:

private class PopularApartirDeRuaBuscaListener implements ActionListener{
        public void actionPerformed(ActionEvent ae) {


            if(ultimaRuaBusca != null && ultimaRuaBusca.equals(ruaBusca)){
                if(timer!=null)
                    timer.stop();
                timer = null;
                return;
            }

            System.out.print("ultimaRuaBusca: "+ultimaRuaBusca);

            ultimaRuaBusca = ruaBusca;

            System.out.println("executou a busca "+ruaBusca);
            if(estado!=null && !estado.isEmpty() && cidade!=null && !cidade.isEmpty()
                    && ruaBusca!=null && !removerTipoDoLogradouro(ruaBusca).isEmpty()){
                ruas = bd.obterRuas(estado, cidade, removerTipoDoLogradouro(ruaBusca));
            }else
                ruas = new LinkedList<Cep>();

            System.out.println("resultado: ");
            for(Cep cep : ruas)
                System.out.println(cep.getRua());
            System.out.println("\n\n");


            if(timer!=null)
                timer.stop();
            timer = null;
        }
    }

    public void popularApartirDeRuaBusca(){
        //popula lista de ruas de acordo com a ruaBusca prenchida, cidade e estado
        //usado para preencher o <select> de ruas

        
        timer = new Timer(2000, new PopularApartirDeRuaBuscaListener());
        timer.start();

        
    }

olha meu facelet:

<span  style="float: left; width: 180px;">
                    Busque sua Rua
                    <br/>
                    <h:inputText value="#{semCookiesBean.ruaBusca}" id="ruaBusca" size="20">
                        <f:ajax event="keyup" execute="@this" listener="#{semCookiesBean.popularApartirDeRuaBusca}" render="rua" />
                    </h:inputText>
                </span>

                <span style="float: left; width: 200px;">
                    <br/>
                    <h:selectOneListbox value="#{semCookiesBean.rua}" id="rua" size="3" style="display: #{!empty semCookiesBean.ruas ? 'inherit' : 'none'};  background: #fff">
                        <f:ajax event="valueChange" execute="@this" listener="#{semCookiesBean.popularApartirDeRua}" render="cep" />
                        <f:selectItem itemLabel="Selecione sua Rua" noSelectionOption="true"/>
                        <f:selectItems value="#{semCookiesBean.ruas}"/>
                    </h:selectOneListbox>
                </span>
Criado 13 de setembro de 2010
Respostas 0
Participantes 1