Re: [javasf] Primefaces - p:commandButton - Ajax [Resolvido]

1,883 views
Skip to first unread message

Leonardo Ribeiro

unread,
Mar 9, 2012, 6:35:06 AM3/9/12
to jav...@googlegroups.com
Pessoal, o problema era que o meu template tinha um form e na página tinha outro, tinha forms aninhados.
Retirei o form da pagina deixando apenas o do template e agora funciona 100%.

Obrigado a todos pela ajuda

2012/3/6 Leonardo Ribeiro <leojr...@gmail.com>
Ok, segue o código da página (retirei alguns campos do form e colunas da datatable so para diminuir um pouco)
No caso o botão consultar nem chama o método {clienteService.pesquisar}, se eu colocar ajax="false" aí funciona 100%



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      xmlns:h="http://java.sun.com/jsf/html
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html"/>
<h:form id="frmPage">
<p:outputPanel id="pForm" style="background-color:#B0C4DE">
<b><i><font size="4" color="#0627D2"> Cadastros - Clientes</font></i></b>
<p:toolbar style="background-color:#B0C4DE" id="tb">
<p:toolbarGroup id="tbg1">
<p:commandButton id="btnShowFilter" value="Config. filtros" style="color:#0066FF;background-color:#F0F8FF" ajax="false" actionListener="#{clienteService.consultar}" disabled="#{clienteService.addUpdtState}"/>
<p:commandButton id="btnConsultar" process="@this" value="Consultar" actionListener="#{clienteService.pesquisar}" style="color:#0066FF;background-color:#F0F8FF" disabled="#{clienteService.addUpdtState}" update=":pForm:tb:tbg1:dtCliente"/>
<p:separator/>
<p:commandButton id="btnAtalhos" style="color:#0066FF;background-color:#F0F8FF" ajax="false" actionListener="#{clienteService.atalho}" value="Atalhos" disabled="#{clienteService.addUpdtState}"/>
<p:commandButton id="btnAdicionais" value="Adicionais" style="color:#0066FF;background-color:#F0F8FF" disabled="#{clienteService.addUpdtState}"/>
<p:separator/>
<p:commandButton id="btnNovo" ajax="false" actionListener="#{clienteService.novo}" value="Novo" style="color:#0066FF;background-color:#F0F8FF" disabled="#{clienteService.addUpdtState}"/>
<p:separator/>
<p:commandButton id="btnImprimir" value="Imprimir" style="color:#0066FF;background-color:#F0F8FF"/>
</p:toolbarGroup>
<p:toolbarGroup id="tbg2" align="right">
<p:commandButton id="btnFecharList" value="Sair do cadastro" ajax="false" style="color:#FF0000;background-color:#F0F8FF" actionListener="#{clienteService.closePage}" disabled="#{clienteService.addUpdtState}"/>
</p:toolbarGroup>
</p:toolbar>
<p:dataTable id="dtCliente" var="cliente" value="#{clienteService.clientes}" emptyMessage="sem registros" rendered="#{clienteService.gridState}"
paginator="true" rows="10" paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
            rowsPerPageTemplate="10,20,30" selection="#{clienteService.selectedEntity}" selectionMode="single" rowKey="#{cliente.id}"
            rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}" rowIndexVar="rowIx">
<p:column headerText="Código" style="max-width: 2%; min-width: 2%">
#{cliente.codigo}
</p:column>
<p:column headerText="Nome">
#{cliente.nome}
</p:column>
<p:column headerText="Fantasia">
#{cliente.fantasia}
</p:column>
<p:column headerText="Ações" style="max-width: 8%; min-width: 8%">
<p:commandButton oncomplete="confirmation.show()" icon="ui-icon-trash" process="@this" title="Excluir o Cliente" style="color:#FF0000;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
<p:commandButton action="#{clienteService.editar}" icon="ui-icon-pencil" ajax="false" title="Alterar o Cliente" style="color:#0066FF;background-color:#FFFFFF">
<f:setPropertyActionListener value="#{cliente}" target="#{clienteService.selectedEntity}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<p:outputPanel id="pAtalhos" style="background-color:#B0C4DE" rendered="#{clienteService.shortcutState}">
<h:outputLabel value="#{clienteService.strAtalhos}" style="font-size:16px;font-style:italic;font-weight:bold;color:#FFFFFF"/>
<h:panelGrid columns="5">
<p:commandButton id="btnAddTarefa" value="Adicionar Tarefa" style="color:#0066FF;background-color:#F0F8FF"/>
<p:commandButton id="btnAddRelVisita" value="Adicionar Relatório de Visita" style="color:#0066FF;background-color:#F0F8FF"/>
<p:commandButton id="btnAddParecerRep" value="Adicionar Parecer Representante" style="color:#0066FF;background-color:#F0F8FF"/>
<h:outputLabel value=""/>
<p:commandButton id="btnVoltar" value="Voltar para listagem" ajax="false" actionListener="#{clienteService.closeShortcutForm}" style="color:#FF0000;background-color:#F0F8FF" icon="ui-icon-arrowreturnthick-1-w"/>
</h:panelGrid>
</p:outputPanel>
<p:outputPanel id="pFiltros" rendered="#{clienteService.consultState}">
<h:outputLabel value="Filtros para Consulta" style="font-size:16px;font-style:italic;font-weight:bold;color:#FFFFFF"/>
<h:panelGrid columns="2">
   <h:outputLabel for="tfCodigo" value="Código" style="font-size:14px;color:#0627D2">
    <p:focus/>
   </h:outputLabel> 
<p:inputText id="tfCodigo"  maxlength="7" size="7" value="#{clienteService.codigoFilter}"/>
   <h:outputLabel for="tfFNome" value="Nome" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfFNome"  maxlength="50" size="50" value="#{clienteService.nomeFilter}"/>
<h:outputLabel for="tfFFantasia" value="Fantasia" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfFFantasia"  maxlength="20" size="20" value="#{clienteService.fantasiaFilter}"/>
<h:outputLabel for="tfFCidade" value="Cidade" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfFCidade"  maxlength="30" size="30" value="#{clienteService.cidadeFilter}"/>
<h:outputLabel for="cbFEstadoF" value="Estado" style="font-size:14px;color:#0627D2"/> 
<h:selectOneMenu id="cbFEstadoF" value="#{clienteService.estadoFilter}">
<f:selectItems value="#{clienteService.ufs}"/>
    </h:selectOneMenu>
<h:outputLabel for="cbFTipoCliente" value="Tipo Cliente" style="font-size:14px;color:#0627D2"/> 
<h:selectOneMenu id="cbFTipoCliente" value="#{clienteService.tipoClienteFilter}" converter="#{exciaEntityConverter}">
<f:selectItems value="#{clienteService.tiposCliente}"/>
    </h:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton id="btnFilterConsultar" icon="ui-icon-search" style="color:#0066FF;background-color:#F0F8FF" value="Confirmar filtros e executar consulta" ajax="false" actionListener="#{clienteService.pesquisar}"/>
<p:commandButton id="btnCancel" icon="ui-icon-arrowreturnthick-1-w" immediate="true" style="color:#FF0000;background-color:#F0F8FF" value="Cancelar filtros e voltar para listagem" ajax="false" actionListener="#{clienteService.closeConsultForm}"/>
</h:panelGrid>
</p:outputPanel>
<p:outputPanel id="pFromAddUpdt" rendered="#{clienteService.addUpdtState}">
<h:outputLabel value="Inserindo/Alterando Cliente" style="font-size:16px;font-style:italic;font-weight:bold;color:#FFFFFF"/>
<h:panelGrid columns="3">
   <h:outputLabel for="tfCnpjCpf" value="CNPJ/CPF" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfCnpjCpf" value="#{clienteService.cnpjCpf}" maxlength="20" size="20" required="true" requiredMessage="CNPJ/CPF é obrigatório">
    <p:ajax event="change" process="@this" update=":pFromAddUpdt; :grow" listener="#{clienteService.verificaCpfCnpj}"/>
    <p:focus/>
   </p:inputText>
   <h:message  for="tfCnpjCpf" errorClass="error"/>
   <h:outputLabel for="tfNome" value="Nome" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfNome" value="#{clienteService.nome}" maxlength="50" size="50" required="true" requiredMessage="Nome é obrigatório"/>
   <h:message  for="tfNome" errorClass="error"/>
<h:outputLabel for="tfFantasia" value="Fantasia" style="font-size:14px;color:#0627D2"/> 
   <p:inputText id="tfFantasia" value="#{clienteService.fantasia}" maxlength="20" size="20" required="true" requiredMessage="Fantasia é obrigatório"/>
   <h:message  for="tfFantasia" errorClass="error"/>
  <h:outputLabel for="cbEstado" value="Estado" style="font-size:14px;color:#0627D2"/> 
<h:selectOneMenu id="cbEstado" required="true" value="#{clienteService.estado}" requiredMessage="Estado é obrigatório">
<f:selectItems value="#{clienteService.ufs}"/>
  </h:selectOneMenu>
  <h:message  for="cbEstado" errorClass="error"/>
</h:panelGrid>
<h:panelGrid columns="3">
<p:commandButton icon="ui-icon-disk" id="btnSalvar" ajax="false" actionListener="#{clienteService.save}" value="Salvar" style="color:#0066FF;background-color:#F0F8FF"/>
<h:outputLabel value="" />
<p:commandButton id="btnCancelar" icon="ui-icon-circle-close" ajax="false" actionListener="#{clienteService.closeConsultForm}" value="Cancelar" immediate="true" style="color:#FF0000;background-color:#F0F8FF"/>
</h:panelGrid>
</p:outputPanel>
</p:outputPanel>
</h:form>
<h:form id="dlg">  
<p:confirmDialog  message="Deseja realmente excluir este registo?" closable="false" header="Aviso" severity="alert" widgetVar="confirmation">  
    <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide()" process="@this" action="#{clienteService.remove}"/>  
        <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide()" type="button"/>  
</p:confirmDialog>  
</h:form>
</html>




2012/3/2 Jackson Fernandes <jackso...@hotmail.com>
kra, então posta seu código ai pra ficar mais facil de ter ajudar.


From: nilu...@gmail.com
Date: Fri, 2 Mar 2012 17:34:38 -0300

Subject: Re: [javasf] Primefaces - p:commandButton - Ajax
To: jav...@googlegroups.com


Aparentemente seu grid não foi renderizado da primeira vez, tente colocá-lo dentro de um <h:panelGroup id="xpto"> e mude o update do commandButton para update="xpto"

Um abraço,
Nilson Uehara



Em 2 de março de 2012 15:22, Leonardo Ribeiro <leojr...@gmail.com> escreveu:
Já tentei apenas com "dtCliente" sem os ":" e nada
O método é chamado, tudo funciona quando coloco no commandButton ajax="false".

O Erro que ocorre não seria do Tomcat? Estou começando a achar isso, sei lá...o fato é que de forma alguma o ajax do commandButton funciona. Tanto usando ActionListener quanto action.

Sobre chamar o service, na verdade o "service" no caso aqui é o "mb"



2012/3/2 Everton Fujimoto <evert...@gmail.com>
no update, tenta colocar o nome inteiro do componente. Tipo "form:toolbar:dtCliente", já tive algumas vezes que o ajax não era chamado porque não identificava qual componente tinha que atualizar. 

"Inspeciona" o objeto no seu navegador (o chrome, tem um que num sei o nome, o firefox tem o firebug, opera tem o dragonfly, etc...) para descobrir o id.



Att.
Everton William Fujimoto
Hecate Systems
CIO
(47)3394-5516
(47)9947-5481



Em 2 de março de 2012 14:15, Joao Paulo <jpbe...@gmail.com> escreveu:

Cara,
Nunca usei update=":dtCliente" com os ":". Sempre faço assim: update="dtCliente" e teu método "pesquisar" recebe um ActionEvent.


Outra coisa...  tua pagina ta chamando método no service??  Eu utilizo o m.bean, e dele, aí sim, um método q chma o service... mas isso não faz diferença no seu problema...

valew

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil


--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
[]'s
Leonardo

Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil


--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
[]'s
Leonardo

Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece



--
[]'s
Leonardo

Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Kenji

unread,
Mar 9, 2012, 7:02:34 AM3/9/12
to jav...@googlegroups.com
a coisa que eu mais queria na vida é que o jsf desse um alerta numa tela com 2 forms aninhados

[]

Kenji

Leonardo Ribeiro

unread,
Mar 9, 2012, 7:04:29 AM3/9/12
to jav...@googlegroups.com
Realmente me pouparia algum tempo

2012/3/9 Kenji <shi...@gmail.com>
Reply all
Reply to author
Forward
0 new messages