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
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
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 <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
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…