1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Componente BlockUI do PrimeFaces não funciona após um update via ajax.

Olá.

Estou com um problema. Aparentemente já encontrei o motivo, mas ainda não encontrei a solução. Segue abaixo o trecho de código. Estou utilizando o PrimeFaces.

Acontece o seguinte. Possuo um formulário que é preenchido com informações existentes através de uma consulta ativada pelo botão buttonGetAlunoData. A consulta é feita e o blockUI nesse momento funciona perfeitamente. Ao receber a resposta é feito um update em cima do panelGrid.

O usuário preenche o restante das informações e então clica em butonMatriculaComRA que dispara um método que irá salvar os dados. Porém nesse momento o blockUI não funciona mais.

Se eu não faço a consulta inicial e preencho todos os campos manualmente, ent~eo o blockUI do butonMatriculaComRA funciona normalmente.

Pesquisando encontrei que o problema é que o link entre os botões e o listener do jQuery é quebrado ao fazer o update. Não uso jQuery explicitamente. O primefaces deve estar fazendo isso. Segue o link de onde encontrei essa explicação: StackOverflow

Fazendo um update em cada componente individualmente, com exceção do botão butonMatriculaComRA, tudo funciona. Mas o comando update fica feio, com 15 ids de todos os componentes necessários.

A meu ver a solução seria recriar esse link dos triggers dos componentes com o jQuery, como é comentado no link. Mas não tenho idéia de como fazer isso ainda.

Alguém já passou por isso e conseguiu revolver, sem ser essa gambi de dar um update nos componentes individuias?

Obrigado.

<!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:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:sec="http://www.springframework.org/security/facelets/tags">

<ui:composition template="/templates/common.xhtml">
    <ui:define name="title">Matrícula Informatizada</ui:define>
    <ui:define name="conteudo">
        <h2>Matrícula Informatizada</h2>
        <h:form id="matriculaInformatizadaForm">
            <p:messages id="msg" autoUpdate="true" showDetail="true" />
...            
            <!-- ############################################################ -->
            <!-- FieldSet - Matricula Informatizada com RA ################## -->
            <!-- ############################################################ -->
            <p:panelGrid id="fsMatInfComRA" rendered="#{matriculaInformatizadaBean.controlRenderPanelComRA()}"
                styleClass="myPanelGrid" style="width:720px">

                <!-- ## Linha 01 ########################################## -->
                <p:row>
...                    
                    <p:column style="text-align: right;">
                        <p:commandButton icon="ui-icon-search" id="buttonGetAlunoData"
                            title="Buscar dados do Aluno." 
                            action="#{matriculaInformatizadaBean.ajaxRecuperarDadosAluno}" update="fsMatInfComRA"/> 
                    </p:column>

                </p:row>
...
                <!-- ## Linha 12 ########################################## -->
                <p:row>

                    <p:column></p:column>

                    <p:column></p:column>

                    <p:column></p:column>

                    <p:column style="text-align: right;">
                        <p:commandButton value="Matricular" icon="ui-icon-pencil" id="butonMatriculaComRA"
                            action="#{matriculaInformatizadaBean.actionMatriculaInfoComRA()}" />
                    </p:column>

                </p:row>

            </p:panelGrid>
...

            <!-- Block Widgets -->
            <p:blockUI block="fsMatInfComRA" trigger="buttonGetAlunoData, butonMatriculaComRA" >
                <p:graphicImage value="/recursos/imagens/loading.gif" />
            </p:blockUI>


        </h:form>


    </ui:define>
</ui:composition>
</html>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java primefaces ajax ou faça a sua própria pergunta.