Fórum Vários submits no formulário utilizando o componente p:dataTable ! #413598

01/03/2012

0

Boa tarde a todos!
Estou tendo o seguinte problema:
Ao utilizar o componente p:dataTable em minha tela e ao selecionar uma linha utilizando o componente p:commandLink, a aplicação realiza vários submits no meu formulário
atrapalhando a performace da minha aplicação.
Segue o código:

Tela onde se encontra o p:dataTable:

<ui:composition xmlns=http://www.w3.org/1999/xhtml
                xmlns:h=http://java.sun.com/jsf/html
                xmlns:f=http://java.sun.com/jsf/core
                xmlns:ui=http://java.sun.com/jsf/facelets
                xmlns:p=http://primefaces.prime.com.tr/ui
                template=/template/iframe.xhtml>

    <ui:define name=titulo>
    </ui:define>

    <ui:define name=conteudo>

        <h:form prependId=false>
            <script type=text/javascript>
                jQuery(document).ready(function(){
                    jQuery(#valorParcela).priceFormat({
                        prefix: ,
                        centsSeparator: ,,
                        thousandsSeparator: .
                    });
                    jQuery(#valorContrato).priceFormat({
                        prefix: ,
                        centsSeparator: ,,
                        thousandsSeparator: .
                    });
                });
            </script>
			...
                <p:dataTable id=listagem styleClass=table emptyMessage=Nenhum banco encontrado
                             value=#{contratoController.todosParceiro} var=item>
                    <p:column>
                        <f:facet name=header>
                            <h:outputText value=ID />
                        </f:facet>
                        <h:outputText value=#{item.idParceiro} />
                    </p:column>
                    <p:column>
                        <f:facet name=header>
                            <h:outputText value=CNPJ />
                        </f:facet>
                        <h:outputText value=#{item.cnpj} />
                    </p:column>
                    <p:column>
                        <f:facet name=header>
                            <h:outputText value=Nome />
                        </f:facet>
                        <h:outputText value=#{item.nomeParceiro} />
                    </p:column>
                    <p:column>
                        <p:commandLink ajax=false value=selecionar action=#{contratoController.parceiroChange} >
                            <f:setPropertyActionListener target=#{contratoController.parceiro} value=#/>
                        </p:commandLink>
                    </p:column>
                </p:dataTable>
                <table class=table-form width=100%>
                    <tfoot>
                        <tr><td><p:messages id=msgs showDetail=true/></td></tr>
                        <tr>
                            <td>
                                <p:commandButton image=ui-icon-arrowthick-1-w value=Voltar ajax=false action=/pages/operacional/propostas/formCliente.xhtml>
                                </p:commandButton>
                            </td>
                        </tr>
                    </tfoot>
                </table>
          </h:form>
    </ui:define>
</ui:composition>


Método chamado várias vezes no submit:

    public DataModel getTodosParceiro() {
        setModelParceiro(new ListDataModel(CODIGO SQL));
        return getModelParceiro();
    }


Método que deveria ser chamado assim que a ação onclick do botão selecionar fosse executada. E neste caso so é chamado após o método anterior ser executado várias vezes.

    public List<Produto> getTodosProduto() {
        if (parceiro != null) {
		  ...
        }
        return produtoLista;
    }


Alguém já passou por esse tipo de problema?
Versão primefaces: 2.2.1;

OBS.: O fato da listagem ser feita pela classe DataModel não é o problema já verifiquei.

Grato a todos pela atenção.

Att,

Cláudio E Costa
Enio Nunes

Enio Nunes

Responder

Posts

01/03/2012

Davi Costa

isso é ciclo de vida do jsf, pesquise sobre o assunto.

att Davi
Responder

Gostei + 0

01/03/2012

Enio Nunes

Boa tarde David!
Sei que o componente p:commandLink aciona um evento de ação que pertence a fase invocar aplicação.
O que não consigo entender é o porque de tantas requisições que são feitas ao acionar o evento.
Teria alguma forma de contornar isso?
Responder

Gostei + 0

01/03/2012

Davi Costa

Infelizmente não, pesquise sobre o ciclo de vida do jsf que vc vai entender melhor, e já fica a dica nada de chamadas ao banco de dados nos seus getters e setters.

att Davi
Responder

Gostei + 0

01/03/2012

Enio Nunes

Obrigado David!
Vlws ahi pelas dicas!
Responder

Gostei + 0

01/03/2012

Davi Costa

Tranquilo Enio. assim que possível favor fechar o chamado

att Davi
Responder

Gostei + 0

03/03/2012

Dyego Carmo

Opa !

Funcionou ?

Poderia fechar o chamado ? :D

Valeu !
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar