2
respostas

p:ajax blur efetuando duas chamadas.

Bom dia Pessoal,

Preciso de uma ajuda!

Estou desenvolvendo uma tela, onde eu digito uma placa e ao sair do campo ele vai no server e verifica se a placa já existe no banco de dados.

Cenário: Entro na tela e preencho a placa! ao sair do campo ele efetua uma chamada mas não vai no servidor! se eu voltar o foco no campo e sair novamente ai sim a requisição chega no servidor.

Analisei as chamadas pelo chrome e vi uma diferença no envio da arvore conforme abaixo.

Form Data que Não chega no servidor

javax.faces.partial.ajax: true
javax.faces.source: placaVeiculo
javax.faces.partial.execute: placaVeiculo
javax.faces.behavior.event: blur
javax.faces.partial.event: blur
placaVeiculo: fgm-8510

Form Data que vai até o servidor e faz o que deve fazer

javax.faces.partial.ajax: true
javax.faces.source: placaVeiculo
javax.faces.partial.execute: placaVeiculo
javax.faces.behavior.event: blur
javax.faces.partial.event: blur
placaVeiculo: fgm-8510
javax.faces.ViewState: 55wDcZdDksVsGO7uUAi2/CG+gBxRhhMIEq52NbIwGBox28edEJ65M+1YuJOlC8ptcrmnShWskihPdwgkS0kstMW66Ri94Mr8iwVufv6/oINmPBvkgv/QzFoFlgH5O/7dlYWXl/zBBTzlFrY3ziuNYc1SgpoSP6DnZR2Yf10NVluzcG4xhGOQAiDeKR9X9HC6mN+E5EuxHTVxCKbdKtmdUNsKULm8wTCq8UwVQk84vFOCjdrPI2VYxro6YgoENrMsTjyqiTFqVCwhFVef5z/plrUU5QM0h4iAolTHHnxdWeCstYWadWRNVa6Odazz9zwt+EjNNJmjbgeBmdnM66FiEzArm8KOqckXLWDznNbNs/2GlChbPu6+/WTs+BPUhRWBsv3pDnGw2D6+NW/h6KuOh0xSl9iDShP9x69uCm0YNdIty7Rn+Zag8HxhggAAV4+M9g6V2I/Klb88QFeX0d4N6AalJMZbLwsAjtfJDl9dgAwaT0pdiGQ0VFVzhoyRcg+ElhrYQw9zqQ9qz7UwvsUW6539mJ+ZrSwt6EI5/6V4pQ1uwAJyQwrb8NY5bHKwoB7NDdO/91wMtOrH+R72LXgU2sdDAt6H0a2N2K+ueLCw/xcbs71d39IKvykJMdvVgQbLeimcfgMoirdtfp3osivjgs7xj9iC/1L4PiVgxJd8D4ujUkFMDd6cyU+TswRLgxpw2OUBhVYRkpVHlhv0hDf/MYghIYyTRW5a4LJjeaA15Wa/769NFyONT/tnjPel4aIB+WfkU73KD75W3+On0LEHGG0ix7+jn3drIXoFBT0gbN2D9C7NM01clmfNBeRYDgyDa3PoWxk4UtJsxJH2lfmr2Im5bBq4zZTgj4B+tu1I8n/IRRiVLnskEG5i+AOOCxyEn8t0PGHuFimglhMQ3OPODjobCy+0fmyuRrpoPBmdoroe6cYovEHPrZZZRJvDkunLqWJOqOKsQ0HB19k/KJomGSxf3PpppdGhJe/62FcRF7micTXfuIkOcISdLKDgLxqWlyVLbt8x4dDQSmiK1HvbtrsFh+XoVtPUUA8uPhl8EPB8oU272u6c5qvYkhDRN/rvuEBNfyVxCG0VVredqLvGhlEp2H83CKt6koI/32YHzJvEcmZG+odDFjH7Wn0A4tAS+fyiJ/f+G98LsQ/5HVaaj9gKICiYcYAgvRpG0hHXAwQt8+MYMphdCuIB70gmqh0hovaQTLbhabzZ55HsWWYJWx6Um4nX+ikQCSwVlcHdhDYgMuolxCx6TmR5G5UJPecsZkjsYeMlHDOILGpZiXP0FvBPUF46JiSd7q12ok7nxmKASh+05be/tjA6Pz2XC5Y7WYZzdtSi5zQCzAcZbXWV6uCWRfhBNJ0rXx5kCblQ9NZYUAnWlZjE5G0/0djBHuajBeI9EjiinYHM9UcovOPfUXbd6h7E4GrwlKi4Ze2Eu1qGNN2s2Q1Up+v/JZVb4qMxNMeSuEqVTne4mofJWIzjnf/GPoCILJ9BG58rRRi13fF1TvrJ6C0Y22nu03usRVVtQe3VBoVM7H4h9/Oiov+AuaXKwzbi1T2vi39mzrjJDmQ=

código da jsp

        <h:form id="form" prependId="false">

            <div class="ui-g-12 ui-lg-3">
                <h:panelGroup id="placaPanel">
                    <p:outputLabel value="Placa"
                        rendered="#{triagemBean.form.tipoViaAcesso.isVeiculo()}"
                        style="font-weight:bold" />
                    <p:inputMask mask="aaa-9999" id="placaVeiculo"
                        style="font-size:38px;font-weight:bold;"
                        value="#{triagemBean.form.pessoaVeiculo.placa}"
                        rendered="#{triagemBean.form.tipoViaAcesso.isVeiculo()}">
                        <p:ajax event="blur" listener="#{triagemBean.validaPlaca}"
                            delay="500" onstart="PF('statusDialog').show()"
                            oncomplete="PF('statusDialog').hide()" process="@this"
                            partialSubmit="true" />
                    </p:inputMask>
                </h:panelGroup>
            </div>

        </h:form>    
2 respostas

percebi que só acontece quando eu utilizo o partialSubmit=true

Fala Herbert, tudo bem?

O partialSubmit fica desativado por default. ele pode ser ativado globalmente com um parâmetro de contexto no web.xml, da seguinte maneira:

<context-param>
  <param-name>primefaces.SUBMIT</param-name>
  <param-value>partial</param-value>
</context-param>

Veja se resolve seu problema

Abraço!