Help urgente a4j

Pessoal alguem saber pq qdo eu faco um reRender por exemplo com o richfaces + a4j ele executa 2x o mesmo metodo, e as vezes ele executa outro metodo q nao tem nada haver com a historia

obrigado

testei na minha aplicacao e utilizando select e chamou uma unica vez.

<h:selectOneMenu value="#{bean.lang}" tabindex="1"  >
                            <f:selectItem itemLabel="<SELECIONE>" itemValue="pt" />
                            <f:selectItem itemLabel="Português" itemValue="pt" />
                            <f:selectItem itemLabel="Inglês" itemValue="en" />
                            <f:selectItem itemLabel="Espanhol" itemValue="es" />
                            <a4j:support event="onchange" reRender="url,formModel2" status="wait" />
                        </h:selectOneMenu> 

cara o meu esta assim:

<tr> <td height="25" colspan="7"> <h:selectOneMenu id="selectRegiaoPessoas" value="#{pessoa.codigoRegiao}" styleClass="combo"> <f:selectItems value="#{pessoa.regiao}" /> <a4j:support event="onchange" reRender="selectBairroPessoa" status="wait" /> </h:selectOneMenu> </td> </tr> <tr> <td height="25" colspan="7"><h:outputLink value="javascript:void(0);" onclick="Richfaces.showModalPanel('mpBairro',{width:450, top:100})" styleClass="fonte_menu"><strong>Bairro de Atuação:</strong></h:outputLink></td> </tr> <tr> <td height="25" colspan="7"> <h:selectOneMenu id="selectBairroPessoa" value="#{pessoa.codigoBairro}" styleClass="combo"> <f:selectItems value="#{pessoa.bairro}" /> </h:selectOneMenu> </td> </tr>

e o metodo assim:

[code]public Collection getBairro(){
Collection toReturn = new ArrayList();

************************************* ELE IMPRIME DUAS VEZES O CODIGO DA REGIAO(logo ele entra 2x aqui… pq???)
System.out.println(codigoRegiao);


    try {
        Connection conexao = Conexao.getInstancia().conectarDb();
        Statement st = conexao.createStatement();
        
        ResultSet rs = st.executeQuery("SELECT * FROM tb_bairro WHERE cd_regiao = "+ codigoRegiao + " ORDER BY nm_bairro");

        toReturn.add(new SelectItem("", "Selecione uma Regiao"));
        while (rs.next()) {
            toReturn.add(new SelectItem(rs.getInt("cd_bairro"), rs.getString("nm_bairro")));
        }
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
    return toReturn;        
}[/code]

qdo eu seleciono uma regiao ele mostra o codigo da regiao 2x

cadê sua action ou o value para #{pessoa.bairro} ?

Esquece, não tinha visto, já achei

Ele entra 2 X quando vc seleciona no combo de regiâo, ou ele está entrando a primeira vezes quando a página é carregada e a segunda quando vc seleciona no combo ?

entao qdo eu seleciono um item no combo… e nao eh so esse ombo nao. .qualquer um q eu faca esse tipo de requisicao ajax ele executa duas vezes

uma duvida. .eu estou fazendo o seguinte… ele esta dentro de um a4j:form, pode ser o caso de ele dar um render no Form e depois no objeto?? porem eu so mando ele dar um render no Objeto e nao no form inteiro

<a4j:form id="formPessoa" ajaxSubmit="true" ignoreDupResponses="true" requestDelay="500">  

esse e o form

abracos

Tenta o seguinte:

coloca ajaxSingle=“true” no teu a4j:support, que ele não envia todo o formulário, mas só o combo em questão.

nada feito :confused:

cra fiz o seguinte:

[code]<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core” %>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html” %>
<%@ taglib uri=“http://richfaces.ajax4jsf.org/rich” prefix=“rich”%>
<%@ taglib uri=“http://richfaces.org/a4j” prefix=“a4j”%>

<%–
Document : Teste
Created on : 18/03/2008, 10:16:36
Author : Administrador
–%>

<%@page contentType=“text/html” pageEncoding=“UTF-8”%>

JSP Page

Hello World!

                <h:selectOneMenu id="selectCidade" value="#{pessoa.codigoCidade}" styleClass="combo" >
                    <f:selectItems value="#{pessoa.cidade}" />
                    <a4j:support event="onchange" reRender="selectRegiaoPessoas" ajaxSingle="true"/>
                </h:selectOneMenu>   
                
                <h:selectOneMenu id="selectRegiaoPessoas" value="#{pessoa.codigoRegiao}" styleClass="combo">
                    <f:selectItems value="#{pessoa.regiao}" /> 
                    <a4j:support event="onchange" reRender="selectBairroPessoa" ajaxSingle="true"/>
                </h:selectOneMenu>
                <h:selectOneMenu id="selectBairroPessoa" value="#{pessoa.codigoBairro}" styleClass="combo">
                    <f:selectItems value="#{pessoa.bairro}"  />
                </h:selectOneMenu>  
            </a4j:region>
        </h:form>
    </f:view>
</body>
[/code]

nao tem nada de mais… e ele me executa 2x o mesmo metodo :frowning:

cara, tenta o seguinte:
tira o region, coloca o proximo combo no reRender, e coloca o atributo action="#{bean.seuMetodoQueExecutaDuasVezes}", e vê se dá certo.

EDIT: O seu reRender tá certo, ignora, faz só o resto

rafa o meu metodo q executa duas vezes e o pessoa.bairro(na verdade qualquer um deles q eu executar ele executa e se eu colocar o action=“pessoa.bairro” ele vai executar 3 vezes eu acho pq o meu metodo esta assim:

[code] public Collection getBairro(){
Collection toReturn = new ArrayList();
System.out.println(“aqui” + codigoRegiao);
try {
Connection conexao = Conexao.getInstancia().conectarDb();
Statement st = conexao.createStatement();

        ResultSet rs = st.executeQuery("SELECT * FROM tb_bairro WHERE cd_regiao = "+ codigoRegiao + " ORDER BY nm_bairro");

        toReturn.add(new SelectItem("", "Selecione uma Regiao"));
        while (rs.next()) {
            toReturn.add(new SelectItem(rs.getInt("cd_bairro"), rs.getString("nm_bairro")));
        }
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
    return toReturn;        
}[/code]

cara pra tu ver… eu to debugando aqui. e ele entra duas vezes no metodo ja qdo abro a pagina… a primeira ate entendo pq ele tenta preencher o campo… mas ele da o return e ja entra novamente no mesmo metodo… sinistro… sendo eu nao chamo ele nem nada… alguem sabe o pq?

Tô com o mesmo problema, alguém descobriu o pq ?

valeu…