Problema com requisição

Olá pessoal, tenho uma página em que as requisições ajax só funcionam na segunda vez que eu clico no commandLink, e não com um clique só como seria o certo.

Por exemplo:

//Minha página. Apaguei tudo e deixei só isso para teste, mas mesmo assim o commandLink só executa o método no bean na segunda vez que eu clico-->  
  
<ui:composition template="./../../administrador/template.xhtml"  
                xmlns="http://www.w3.org/1999/xhtml"  
                xmlns:ui="http://java.sun.com/jsf/facelets"  
                xmlns:p="http://primefaces.org/ui"   
                xmlns:h="http://java.sun.com/jsf/html"  
                xmlns:sec="http://www.springframework.org/security/facelets/tags"  
                xmlns:f="http://java.sun.com/jsf/core">  
  <ui:define name="content">  
    <h:form id="form_cadastro_usuario" prependId="false">  
       <h:inputText id="txt_teste" value="#{managedBeanSecurity.telefone}"/>  
       <p:commandLink  actionListener="#{managedBeanSecurity.teste}" process="@this txt_teste" value="Enviar" />  
    </h:form>  
   </ui:define>  
</ui:composition>  
  
  
//Meu bean  
  
@ManagedBean  
@SessionScoped  
public class ManagedBeanSecurity implements Serializable {  
  
//Outras variáveis e métodos  
  
//Este método só é executado no segundo clique do commandLink  
public void teste(ActionEvent e)  
    {  
    System.out.println("O método teste fo executado com êxito.");  
    System.out.println("O telefone submetido foi:" + this.getTelefone());  
    }  
}  

Alguém poderia me ajudar?

Minha plataforma: Netbeans 7.1.2, JSF 2.1, Primefaces 3.4.1 e JDK 1.7

Faz um teste, deixe apenas a parte do form na página com h:head e h:body. Veja se funciona.

Ok hebert vou terntar

Bom percebi que meu template já tem o <h:head> e o <h:body>, veja:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <h:outputStylesheet name="default.css" library="css" />  
        <h:outputStylesheet name="cssLayout.css" library="css" />
        <h:outputScript library="js" name="jquery.maskMoney.js" />
        <h:outputScript library="js" name="locale_primefaces.js" />   

        <f:loadBundle basename="properties.properties_pt_BR" var="i18n"/>
        <script type="text/javascript">
            jQuery(function(){
                jQuery('input[id*=txt_precoCusto]').maskMoney({symbol:'R$ ', showSymbol:true, thousands:'.', decimal:',', symbolStay: true});
                jQuery('input[id*=txt_margemLucro]').maskMoney({symbol:'R$ ', showSymbol:true, thousands:'.', decimal:',', symbolStay: true});
            });
        </script>
        <title>Facelets Template</title>
    </h:head>

    <h:body style="font-size: 10px !important">
        <noscript>
                O JavaScript do seu Browse deve ser habilitado para melhor visualização desta Página. 
        </noscript>
        <div id="tudo">
            <div id="menu_login">
                <ui:insert name="menu_login"/>
            </div>
            <div id="menu_principal">
                <ui:insert name="menu_principal"/>
            </div>
            <div id="area_localizacao">
                <ui:insert name="area_localizacao"/>
            </div>
            <div id="conteudo">
                <div id="left">
                    <ui:insert name="left">Left</ui:insert>
                </div>
                <div>
                    <div id="right">
                        <ui:insert name="right">Right</ui:insert>
                    </div>
                    <div id="content" class="right_content">
                        //insert do meu form
                        <ui:insert name="content">Content</ui:insert>

                    </div>
                </div>
                <div id="bottom">
                    <ui:insert name="bottom">Bottom</ui:insert>
                </div>
            </div>

        </div>

    </h:body>

</html>

Pois é, e não está funcionando. :lol: :lol: :lol:

Por gentileza, poderia deixar uma página apenas com head, body, form e os componentes necessários?

ok vou tentar

Bom fiz assim:


<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="./../../administrador/template.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui" 
                xmlns:h="http://java.sun.com/jsf/html"
             
                xmlns:f="http://java.sun.com/jsf/core">

    <ui:define name="menu_login">

    </ui:define>

    <ui:define name="menu_principal">

    </ui:define>

    <ui:define name="area_localizacao">

    </ui:define>

    <ui:define name="left">

    </ui:define>

    <ui:define name="right">

    </ui:define>

    <ui:define name="content">
        <h:head>
            
        </h:head>
        <h:body>
        <h:form id="form_cadastro_usuario" prependId="false">
           
                <h:inputText id="txt_teste" value="#{managedBeanSecurity.telefone}"/>
                <p:commandLink  actionListener="#{managedBeanSecurity.teste}" process="@this txt_teste" value="Enviar" />

              
        </h:form>
        </h:body>    
    </ui:define>

    <ui:define name="bottom">
<!---->
    </ui:define>

</ui:composition>

Porém ainda não funcionou. O que será que esta errado?

cara, arranca fora esses trem de composition!

Testa com uma página seca tudo na mão. -_-’’

Hebert para ser mais especifico, eis minha pagina inteira:

Na realidade esta página funciona perfeitamente, exceto dois componentes. O selectonemenu estado, quando escolhido o estado o valor muda mas depois volta rapidamente ao valor anterior. Na segunda vez, aí sim ele fica normal.

E o meu commandlink telefone também funciona porém só na segunda vez que eu clico. Acho que deve ser algo no ciclo de vida.

 <ui:define name="content">

        <h:form id="form_cadastro_usuario" prependId="false">
            <font size="2">
                <p:growl globalOnly="true" id="growl" sticky="true" showDetail="true"/>  
                <p:messages globalOnly="true"/>
                
                
                <h:panelGrid columns="1">
                    <p:fieldset legend="#{i18n['header.dados.usuario']}">                     
                        <h:panelGrid id="pg_usuarios" columns="3">   

                            <p:outputLabel styleClass="label_habilitado" id="label_som_tipo_usuario" for="som_role"  value="#{i18n['tipo.usuario']}" />
                            <p:selectOneMenu styleClass="input"  required="true" id="som_role" requiredMessage="#{i18n['campo.obrigatorio']}" value="#{managedBeanSecurity.usuario.roles}" converter="objectConverter" >
                                <f:selectItems value="#{managedBeanSecurity.roles}" var="r" itemLabel="#{r.nomeRole}" itemValue="#{r}"/>
                            </p:selectOneMenu> 
                            <p:message id="msg_som_usuario" for="som_role"/>

                            <p:outputLabel styleClass="label_habilitado" id="label_txt_username" for="txt_username" value="#{i18n['usuario']}" />  
                            <p:inputText styleClass="input" validator="usuarioValidator"  required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="txt_username" label="#{i18n['label.nome']}"  
                                         value="#{managedBeanSecurity.usuario.username}">
                                <f:validator validatorId="usuarioValidator"/>
                                <p:ajax event="blur" update=":form_cadastro_usuario:txt_username :form_cadastro_usuario:msg_txt_username :form_cadastro_usuario:label_txt_username" />
                            </p:inputText>
                            <p:message id="msg_txt_username" for="txt_username" />


                            <p:outputLabel styleClass="label_habilitado" id="label_txt_password" for="txt_password" value="#{i18n['password']}" />  
                            <p:password styleClass="input"  redisplay="true"  promptLabel="#{i18n['coloque.senha']}" weakLabel="#{i18n['senha.fraca']}" strongLabel="#{i18n['senha.otima']}" goodLabel="#{i18n['senha.boa']}" feedback="true"  required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="txt_password" label="#{i18n['label.password']}"  
                                        value="#{managedBeanSecurity.usuario.password}" >
                                <p:ajax event="blur" update=":form_cadastro_usuario:txt_password :form_cadastro_usuario:msg_txt_password :form_cadastro_usuario:label_txt_password" />
                            </p:password>
                            <p:message id="msg_txt_password" for="txt_password" />

                            <p:outputLabel styleClass="label_habilitado"  id="label_txt_reenter_password" for="txt_reenter_password" value="#{i18n['reenter.password']}" />  
                            <p:password styleClass="input" redisplay="true" validatorMessage="#{i18n['validator.confirm.password']}" validator="#{managedBeanSecurity.reenterPasswordValidator}" promptLabel="#{i18n['coloque.senha']}" weakLabel="#{i18n['senha.fraca']}" strongLabel="#{i18n['senha.otima']}" goodLabel="#{i18n['senha.boa']}" feedback="true" required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="txt_reenter_password"  
                                        value="#{managedBeanSecurity.usuario.reenterPassword}" > 
                                <p:ajax event="blur" update=":form_cadastro_usuario:txt_reenter_password :form_cadastro_usuario:msg_txt_reenter_password :form_cadastro_usuario:label_txt_reenter_password" />
                            </p:password> 
                            <p:message id="msg_txt_reenter_password" for="txt_reenter_password" />


                        </h:panelGrid>  
                    </p:fieldset>

                    <p:fieldset legend="#{i18n['dados.pessoais']}">
                        <h:panelGrid columns="3"> 
                            <p:outputLabel styleClass="label_habilitado" id="label_txt_nome" for="txt_nome" value="#{i18n['nome']}" />  
                            <p:inputText styleClass="input" size="40"  id="txt_nome" required="true" requiredMessage="#{i18n['campo.obrigatorio']}" value="#{managedBeanSecurity.usuario.clientes.nome}" >
                                <p:ajax event="blur" update=":form_cadastro_usuario:txt_nome :form_cadastro_usuario:msg_txt_nome :form_cadastro_usuario:label_txt_nome" />
                            </p:inputText>  
                            <p:message id="msg_txt_nome" for="txt_nome" />

                            <p:outputLabel styleClass="label_habilitado" id="label_txt_data_nascimento" for="txt_data_nascimento" value="#{i18n['nascimento']}" />  
                            <p:calendar styleClass="input" pages="2" size="10" requiredMessage="#{i18n['campo.obrigatorio']}" maxdate="#{managedBeanSecurity.limite_inicial}" mindate="#{managedBeanSecurity.limite_anterior}" locale="pt_BR" pattern="dd/MM/yyyy" required="true"  id="txt_data_nascimento" value="#{managedBeanSecurity.usuario.clientes.dataNascimento}" >
                                <p:ajax  event="dateSelect" update=":form_cadastro_usuario:txt_data_nascimento :form_cadastro_usuario:msg_txt_data_nascimento :form_cadastro_usuario:label_txt_data_nascimento" />
                            </p:calendar>
                            <p:message id="msg_txt_data_nascimento" for="txt_data_nascimento" />

                        </h:panelGrid>  
                    </p:fieldset>

                    <p:fieldset legend="#{i18n['documentacao']}">
                        <h:panelGrid columns="3"> 

                            <p:outputLabel styleClass="label_habilitado" id="label_txt_rg" for="txt_rg" value="#{i18n['rg']}" />
                            <p:inputText styleClass="input" value="#{managedBeanSecurity.usuario.clientes.rg}" required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="txt_rg" >
                                <p:ajax event="blur" update=":form_cadastro_usuario:label_txt_rg :form_cadastro_usuario:msg_txt_rg :form_cadastro_usuario:txt_rg" />
                            </p:inputText>
                            <p:message id="msg_txt_rg" for="txt_rg"/>

                            <p:outputLabel styleClass="label_habilitado" id="label_txt_cpf" for="txt_cpf" value="#{i18n['cpf']}" />
                            <p:inputMask styleClass="input" mask="999.999.999-99" value="#{managedBeanSecurity.usuario.clientes.cpf}"  required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="txt_cpf">
                                <f:validator validatorId="cpfValidatorExists"/>
                                <f:validator validatorId="cpfValidatorValid"/>
                                <p:ajax event="blur" update=":form_cadastro_usuario:label_txt_cpf :form_cadastro_usuario:msg_txt_cpf :form_cadastro_usuario:txt_cpf" />
                            </p:inputMask>
                            <p:message id="msg_txt_cpf" for="txt_cpf"/>

                        </h:panelGrid>  
                    </p:fieldset>
                    <p:fieldset id="fs_dados_postais" legend="#{i18n['dados.postais']}">

                        <h:panelGrid columns="3">

                            <p:outputLabel styleClass="label_habilitado" for="txt_cep" id="label_txt_cep" value="#{i18n['cep']}" />  
                            <p:inputMask styleClass="input" mask="99.999-999" value="#{managedBeanSecurity.usuario.clientes.cep}" id="txt_cep" required="true" requiredMessage="#{i18n['campo.obrigatorio']}" >
                                <p:ajax event="blur" update=":form_cadastro_usuario:fs_dados_postais" listener="#{managedBeanSecurity.buscaEnderecoPorCep}" />
                            </p:inputMask> 
                            <p:message  id="msg_txt_cep" for="txt_cep" />

                            <p:outputLabel styleClass="label_habilitado" id="label_som_estado" for="som_estado"  value="#{i18n['estado']}" />
                            <p:selectOneMenu styleClass="input"  value="#{managedBeanSecurity.usuario.clientes.cidades.estados}" converter="estadoConverter" valueChangeListener="#{managedBeanSecurity.carregaCidades}" id="som_estado" >
                                <f:selectItems value="#{managedBeanSecurity.estados}" var="e" itemLabel="#{e.estado}" itemValue="#{e}"/>
                                <p:ajax event="change" update=":form_cadastro_usuario:som_cidade :form_cadastro_usuario:label_som_estado :form_cadastro_usuario:msg_som_estado  :form_cadastro_usuario:som_estado "/>
                            </p:selectOneMenu> 
                            <p:message id="msg_som_estado" for="som_estado"/>

                            <p:outputLabel styleClass="label_habilitado" id="label_som_cidade" for="som_cidade" value="#{i18n['cidade']}" />
                            <p:selectOneMenu  styleClass="input" valueChangeListener="#{managedBeanSecurity.carregaBairros}" converter="cidadeConverter" value="#{managedBeanSecurity.usuario.clientes.cidades}" required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="som_cidade" >                              
                                <f:selectItems value="#{managedBeanSecurity.cidades}" var="c" itemLabel="#{c.cidade}" itemValue="#{c}"/>
                                <p:ajax event="change" update=":form_cadastro_usuario:label_som_cidade :form_cadastro_usuario:msg_som_cidade :form_cadastro_usuario:som_cidade" />
                            </p:selectOneMenu> 
                            <p:message id="msg_som_cidade" for="som_cidade"/>

                            <p:outputLabel styleClass="label_habilitado" for="ac_bairro" id="label_ac_bairro" value="#{i18n['bairro']}" />
                            <p:autoComplete styleClass="input" itemLabel="#{bairro}" itemValue="#{bairro.bairro}" var="bairro" value="#{managedBeanSecurity.usuario.clientes.bairro}" completeMethod="#{managedBeanSecurity.suggestionsBairros}"  required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="ac_bairro">
                                <p:ajax event="itemSelect" listener="#{managedBeanSecurity.carregaLogradouros}" process="ac_bairro" update=":form_cadastro_usuario:label_ac_bairro :form_cadastro_usuario:msg_ac_bairro :form_cadastro_usuario:ac_bairro :form_cadastro_usuario:ac_logradouro"/> 
                            </p:autoComplete>
                            <p:message id="msg_ac_bairro"  for="ac_bairro"/>

                            <p:outputLabel styleClass="label_habilitado" for="ac_logradouro" id="label_ac_logradouro" value="#{i18n['logradouro']}" />
                            <p:autoComplete styleClass="input" size="40" itemLabel="#{logradouro}" itemValue="#{logradouro.logradouro}" var="logradouro" value="#{managedBeanSecurity.usuario.clientes.logradouro}" completeMethod="#{managedBeanSecurity.suggestionsLogradouros}"  required="true" requiredMessage="#{i18n['campo.obrigatorio']}" id="ac_logradouro">
                                <p:ajax event="itemSelect" update=":form_cadastro_usuario:label_ac_logradouro :form_cadastro_usuario:msg_ac_logradouro :form_cadastro_usuario:ac_logradouro" />
                            </p:autoComplete>   
                            <p:message id="msg_ac_logradouro" for="ac_logradouro"/>

                            <p:outputLabel styleClass="label_habilitado" for="txt_numero_logradouro" id="label_txt_numero_logradouro" value="#{i18n['numero']}" />  
                            <p:spinner styleClass="input"  id="txt_numero_logradouro" value="#{managedBeanSecurity.usuario.clientes.numeroLogradouro}" required="true" requiredMessage="#{i18n['campo.obrigatorio']}" >
                                <p:ajax event="change" update=":form_cadastro_usuario:label_txt_numero_logradouro :form_cadastro_usuario:msg_txt_numero_logradouro :form_cadastro_usuario:txt_numero_logradouro" />
                            </p:spinner>  
                            <p:message id="msg_txt_numero_logradouro" for="txt_numero_logradouro" />

                            <p:outputLabel styleClass="label_habilitado" id="label_txt_email" for="txt_email" value="#{i18n['email']}" />
                            <p:inputText styleClass="input" validatorMessage="#{i18n['validator.email']}" size="20" value="#{managedBeanSecurity.usuario.clientes.EMail}" id="txt_email">
                                <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"/>
                                <p:ajax event="blur" update=":form_cadastro_usuario:label_txt_email :form_cadastro_usuario:msg_txt_email :form_cadastro_usuario:txt_email" />
                            </p:inputText>   
                            <p:message id="msg_txt_email" for="txt_email"/>

                            <p:outputLabel styleClass="label_habilitado" id="label_ck_enabled" for="ck_enabled" value="Habilitar"/>
                            <p:selectBooleanCheckbox styleClass="input" id="ck_enabled"  value="#{managedBeanSecurity.usuario.enabled}">
                                <p:ajax event="change"/>
                            </p:selectBooleanCheckbox>
                            <p:message id="msg_ck_enabled" for="ck_enabled"/>

                        </h:panelGrid>
                       
                       //Coloquei para teste e não funciona 
                       <h:inputText id="txt_teste" value="#{managedBeanSecurity.telefone}"/>
                       <p:commandLink  actionListener="#{managedBeanSecurity.teste}" process="@this txt_teste" value="Enviar" />


                        <p:outputPanel  id="op_tabela_telefones_cliente">
                        </p:outputPanel>

                    </p:fieldset>

                    <h:panelGrid columns="3">
                        <p:commandLink id="btn_clear_cliente" actionListener="#{managedBeanSecurity.apagarUsuario}">
                            <p:graphicImage url="/resources/img/icones/clear_48.png" height="48px" width="48px" />
                        </p:commandLink>

                        <p:commandLink id="btn_incluir_cliente" onclick="wv_dlg_incluir_usuario.show();">
                            <p:graphicImage url="/resources/img/icones/save_48.png" height="48px" width="48px" />
                        </p:commandLink>

                        <p:commandLink id="btn_gerenciar_usuarios" immediate="true" ajax="false" process="@form" action="/paginas/funcionario/usuario/gerenciar?faces-redirect=true" >
                            <p:graphicImage url="/resources/img/icones/managed_users_48.png" height="48px" width="48px" />
                        </p:commandLink>

                    </h:panelGrid>
                </h:panelGrid>
            </font>
            <p:dialog header="#{i18n['header.inclusao.usuario']}" modal="true"  id="dlg_inclusao_usuario" closable="true" 
                      widgetVar="wv_dlg_incluir_usuario">
                <center>

                    <h:panelGrid columns="2" >
                        <p:graphicImage url="/resources/img/icones/question_64.png"/>
                        <h:outputText value="#{i18n['confirmar.inclusao']}"/> 
                    </h:panelGrid>

                    <h:panelGrid columns="2" >
                        <p:commandButton process="@this"  actionListener="#{managedBeanSecurity.incluirCliente}"  value="#{i18n['incluir']}"
                                         onclick="wv_dlg_incluir_usuario.hide();" >
                        </p:commandButton>
                        <p:commandButton id="btn_cancelar_usuario" value="#{i18n['cancelar']}" onclick="wv_dlg_incluir_usuario.hide();" type="button" />
                    </h:panelGrid>

                </center>

            </p:dialog>
            <p:dialog modal="modal"  header="#{i18n['header.exclusao.telefones.usuario']}"  id="dlg_exclusao_telefones_usuario" closable="true" 
                      widgetVar="wv_dlg_exclusao_telefones_usuario">
                <center>

                    <h:panelGrid columns="2" >
                        <p:graphicImage url="/resources/img/icones/question_64.png"/>
                        <h:outputText value="#{i18n['confirmar.exclusao']}"/> 
                    </h:panelGrid>

                    <h:panelGrid columns="2" >
                        <p:commandButton  onclick="wv_dlg_exclusao_telefones_usuario.hide();"  process="@this"  actionListener="#{managedBeanSecurity.excluirTelefonesCliente}"  value="#{i18n['excluir']}"
                                          update=":form_cadastro_usuario:op_tabela_telefones_cliente">
                        </p:commandButton>
                        <p:commandButton value="#{i18n['cancelar']}" onclick="wv_dlg_exclusao_telefones_usuario.hide();" type="button" />
                    </h:panelGrid>

                </center>

            </p:dialog>
            <p:ajaxStatus style="position:fixed;right:5px;top:5px">  
                <f:facet name="start">  
                    <p:panel style="width: 250px;">
                        <h:panelGrid columns="1">
                            <h:outputText styleClass="label_habilitado" value="Processando sua requisição"/>
                            <p:graphicImage value="/resources/img/icones/ajax_loader_barra.gif"/>
                        </h:panelGrid>
                    </p:panel>
                </f:facet>  

                <f:facet name="complete">  
                    <h:outputText value="" />  
                </f:facet>  
            </p:ajaxStatus> 
        </h:form>
    </ui:define>

Será que há alguma outra solução?

Não duplique o post

http://www.guj.com.br/java/289549-requisicao-ajax-so-executa-na-segunda-vez

Na versão original tente retirar o

 process="@this txt_teste"

Bom dia,

Estava hoje com o mesmo problema e após muito esforço e pesquisa consegui resolver esse problema, fiz da seguinte forma

  • usei um <h:commandButton
  • to type submit
  • retirei todos os forms que estava em volta

<h:column>
<f:facet name=“header”>
<h:outputText value="#{msg[‘acesso.geral.editar’]}" />
</f:facet>
<h:commandButton type=“submit” value="#{msg[‘acesso.geral.editar’]}">
<f:setPropertyActionListener target="#{setorMB.setorSel}" value="#{v}"/>
<f:ajax event=“click” listener="#{setorMB.alterar}"/>
</h:commandButton>
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msg[‘acesso.geral.excluir’]}" />
</f:facet>
<h:commandButton type=“submit” value="#{msg[‘acesso.geral.excluir’]}" >
<f:setPropertyActionListener target="#{setorMB.setorSel}" value="#{v}"/>
<f:ajax event=“click” listener="#{setorMB.excluir}" />
</h:commandButton>
</h:column>