Vários submits no formulário utilizando o componente p:dataTable !
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:
Método chamado várias vezes no submit:
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.
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
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
Curtidas 0
Respostas
Davi Costa
01/03/2012
isso é ciclo de vida do jsf, pesquise sobre o assunto.
att Davi
att Davi
GOSTEI 0
Enio Nunes
01/03/2012
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?
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?
GOSTEI 0
Davi Costa
01/03/2012
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
att Davi
GOSTEI 0
Enio Nunes
01/03/2012
Obrigado David!
Vlws ahi pelas dicas!
Vlws ahi pelas dicas!
GOSTEI 0
Davi Costa
01/03/2012
Tranquilo Enio. assim que possível favor fechar o chamado
att Davi
att Davi
GOSTEI 0
Dyego Carmo
01/03/2012
Opa !
Funcionou ?
Poderia fechar o chamado ? :D
Valeu !
Funcionou ?
Poderia fechar o chamado ? :D
Valeu !
GOSTEI 0