Problemas com Basic Row Selection e Filter do Primefaces
26 respostas
L
leonardoteles
Galera, boa tarde…
Estou com seguinte problema e queria a ajuda de vcs!
Tenho uma tabela que está “decorada” com o primefaces e utilizando o filtro dele tbm…funciona normalmente, qualquer dos parâmetros que coloco lá ele busca na boa, e quando vou pela paginação, tudo rola normal…
O problema é quando eu procuro um registro, acho o mesmo, e clico no botão para edição do campo…deixa eu explicar o que rola aqui:
…um formulário que contém dados para inserir, atualizar e excluir na mesma página…
…ele me retorna o registro de edição da primeira página!
Mais ou menos assim: edita normal só se eu não procurar por um registro…se eu paginar pelos botões funciona, mas procurou por um registro qualquer, quando clico no botão editar, me retorna o registro da primeira página, mesmo não sendo ele!!!
Coloca o modo como está a parte da sua datatable por favor
L
leonardoteles
opa....obrigado pela resposta rápida!!
segue meu xhtml com o form todo...
<?xmlversion="1.0"encoding="ISO-8859-1"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:sec="http://www.springframework.org/security/facelets/tags"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:p="http://primefaces.org/ui"><ui:compositiontemplate="/templates/interna.xhtml"><ui:definename="titulo">SistemadeCadastramentodeContratosdeReparos-SisReparo-CadastrarContratos</ui:define><ui:definename="centro"><divclass="titulo_pagina"><h1>CADASTRODECONTRATOS</h1></div><divclass="titulo_interno"><h4>Camposdepreenchimento<fontcolor='#FF0000'>obrigatório!</font></h4></div><p:fieldset><divclass="alinhaFormularios"><h:formid="edicao"prependId="false"><!--<divclass="msgErroValidacao"><h:messages/></div>--><h:inputHiddenvalue="#{contratoBean.contrato.dgco}"/><h:inputHiddenvalue="#{contratoBean.destinoSalvar}"/><h:panelGridcolumns="4"><h:panelGridcolumns="2"><h:outputLabelvalue="DGCO: "for="dgco"style="color:red"/><p:inputMaskid="dgco"value="#{contratoBean.contrato.dgco}"required="true"size="29"maxlength="9"mask="99999/9999"requiredMessage=" - Erro de validação no campo DGCO: o valor é necessário."validatorMessage=" - Erro de inserção no campo DGCO: o campo DGCO só aceita valores numéricos e uma barra no formato (99999/9999)."><f:validateRegexpattern="(^[0-9]{5}+[/]{1}+[0-9]{4})"/></p:inputMask><h:outputLabelvalue="OC: "for="oc"style="color:red"/><p:inputTextid="oc"value="#{contratoBean.contrato.oc}"required="true"size="29"maxlength="06"requiredMessage=" - Erro de validação no campo OS: o valor é necessário."validatorMessage=" - Erro de inserção no campo OC: o valor é menor do que o mínimo permitido de 6"><f:validateRegexpattern="(^[0-9]{6})"/></p:inputText><h:outputLabelvalue="CNPJ: "for="cnpj"style="color:red"/><p:inputMaskid="cnpj"value="#{contratoBean.contrato.cnpj}"required="true"size="29"maxlength="14"requiredMessage=" - Erro de validação no campo CNPJ: o valor é necessário."/><h:outputLabelvalue="Ativo: "for="ativo"style="color:red"/><p:selectOneMenuvalue="#{contratoBean.contrato.ativo}"id="ativo"required="true"requiredMessage=" - Erro de validação no campo ATIVO: o valor é necessário."><f:selectItemitemLabel=" Selecione uma das opções "/><f:selectItemitemLabel="B = Bloqueado"itemValue="B"/><f:selectItemitemLabel="D = Distrato"itemValue="D"/><f:selectItemitemLabel="N = Inativo"itemValue="N"/><f:selectItemitemLabel="S = Ativo"itemValue="S"/><f:selectItemitemLabel="V = Contrato Vencido"itemValue="V"/></p:selectOneMenu><h:outputLabelvalue="Contrato Cobra: "for="contratoCobra"/><p:inputMaskid="contratoCobra"value="#{contratoBean.contrato.contratoCobra}"size="29"maxlength="10"mask="99999/9999"/><h:outputLabelvalue="Fornecedor: "for="fornecedor"/><p:inputTextid="fornecedor"value="#{contratoBean.contrato.fornecedor}"size="29"maxlength="100"/><h:outputLabelvalue="Pregão: "for="pregao"/><p:inputTextid="pregao"value="#{contratoBean.contrato.pregao}"size="29"maxlength="14"/><h:outputLabelvalue="Solicitação: "for="solicitacao"/><p:inputTextid="solicitacao"value="#{contratoBean.contrato.solicitacao}"size="29"maxlength="100"/><h:outputLabelvalue="Descrição: "for="descricao"/><p:inputTextareaid="descricao"value="#{contratoBean.contrato.descricao}"cols="34"/><h:outputLabelvalue="Data da Assinatura: "for="dataAssinatura"/><p:calendarid="dataAssinatura"value="#{contratoBean.contrato.dataAssinatura}"size="12"maxlength="10"effect="slide"navigator="true"showOn="button"><f:convertDateTimedateStyle="medium"/></p:calendar><h:outputLabelvalue="Data do Vencimento: "for="dataVencimento"/><p:calendarid="dataVencimento"value="#{contratoBean.contrato.dataVencimento}"size="12"maxlength="10"effect="slide"navigator="true"showOn="button"><f:convertDateTimedateStyle="medium"/></p:calendar><h:outputLabelvalue="Data do Distrato: "for="dataDistrato"/><p:calendarid="dataDistrato"value="#{contratoBean.contrato.dataDistrato}"size="12"maxlength="10"effect="slide"navigator="true"showOn="button"><f:convertDateTimedateStyle="medium"/></p:calendar></h:panelGrid> <h:panelGridcolumns="2"><h:outputLabelvalue="Valor Global: "for="valorGlobal"/><p:inputTextid="valorGlobal"value="#{contratoBean.contrato.valorGlobal}"size="29"maxlength="10"><f:convertNumberminFractionDigits="2"/></p:inputText><h:outputLabelvalue="Valor de Consumo: "for="valorConsumo"/><p:inputTextid="valorConsumo"value="#{contratoBean.contrato.valorConsumo}"size="29"maxlength="10"><f:convertNumberminFractionDigits="2"/></p:inputText><h:outputLabelvalue="Saldo: "for="saldo"/><p:inputTextid="saldo"value="#{contratoBean.contrato.saldo}"size="29"maxlength="10"><f:convertNumberminFractionDigits="2"/></p:inputText><h:outputLabelvalue="Dias de Atraso: "for="diasAtraso"/><p:inputTextid="diasAtraso"value="#{contratoBean.contrato.diasAtraso}"size="29"maxlength="02"/><h:outputLabelvalue="Percentual por Atraso: "for="percentualAtraso"/><p:inputTextid="percentualAtraso"value="#{contratoBean.contrato.percentualAtraso}"size="29"maxlength="10"><f:convertNumberminFractionDigits="2"/></p:inputText><h:outputLabelvalue="Multa por Atraso: "for="multaAtraso"/><p:inputTextid="multaAtraso"value="#{contratoBean.contrato.multaAtraso}"size="29"maxlength="10"><f:convertNumberminFractionDigits="2"/></p:inputText><h:outputLabelvalue="Percentual por Devolução: "for="percentualDevolucao"/><p:inputTextid="percentualDevolucao"value="#{contratoBean.contrato.percentualDevolucao}"size="29"maxlength="04"><f:convertNumberminFractionDigits="2"/></p:inputText><h:outputLabelvalue="Multa por Devolução: "for="multaDevolucao"/><p:inputTextid="multaDevolucao"value="#{contratoBean.contrato.multaDevolucao}"size="29"maxlength="10"><f:convertNumberminFractionDigits="2"/></p:inputText><h:outputLabelvalue="Região: "for="regiao"/><p:selectOneMenuvalue="#{contratoBean.contrato.regiao}"id="regiao"><f:selectItemitemLabel=" Selecione uma das opções "/><f:selectItemitemLabel=" 0 = Todos os CAT's"itemValue="0"/><f:selectItemitemLabel=" 1 = CAT's da 1ª Região"itemValue="1"/><f:selectItemitemLabel=" 2 = CAT's da 2ª Região"itemValue="2"/></p:selectOneMenu><h:outputLabelvalue="CAT de forma livre: "for="cat"/><p:inputTextareaid="cat"value="#{contratoBean.contrato.cat}"cols="34"/><h:outputLabelvalue="Observação: "for="observacao"/><p:inputTextareaid="observacao"value="#{contratoBean.contrato.observacao}"cols="34"/></h:panelGrid></h:panelGrid><br/><h:panelGridcolumns="2"><h:commandLinkaction="#{contratoBean.salvar}"update="aviso"><f:ajaxexecute="@form"render=":edicao :listagem"/><h:graphicImagelibrary="imagens"name="btn_salvar.png"style="border:0"/><p:growlid="aviso"showDetail="false"sticky="true"/></h:commandLink><br/></h:panelGrid></h:form></div></p:fieldset><divclass="titulo_interno"><h4>ImportarÍtensdoContrato</h4></div><h:formenctype="multipart/form-data"><p:fieldset><p:messagesshowDetail="true"/><h3>Utilizeesteformulárioparafazerouploaddoarquivocomosítensdocontratoquevocêacaboudecadastrar.</h3><br/><p:fileUploadfileUploadListener="#{fileUploadController.handleFileUpload}"styleClass="cor_primefaces"mode="advanced"update="messages"label="Selecione um arquivo"sizeLimit="1048576"allowTypes="/(\.|\/)(csv|txt|xls|xlsx)$/"invalidSizeMessage="O tamanho máximo permitido para cada arquivo é de 1 Megabyte!"invalidFileMessage="Somente arquivos do tipo *.csv, *.txt, *.xls e *.xlsx são permitidos !"/><p:growlid="messages"showDetail="true"sticky="true"/></p:fieldset></h:form><br/><divclass="titulo_interno"><h4>GravarÍtensdoContrato</h4></div><h:form><p:fieldset><p:messagesshowDetail="true"/><h3>Utilizeestebotãoparaexecutarocomandodeimportaçãodosítensdocontratoquevocêacaboudecadastrar.<br/><br/><fontcolor='#FF0000'>OBS:</font>Executeestecomandosomentenofinaldodia,quandoacoletadetodososítensdoscontratoscadastrados<br/>estiverterminada!</h3><br/><p:commandButtonaction="#{contratoBean.executa}"icon="ui-icon-disk"value="Gravar"/></p:fieldset></h:form><br/><divclass="titulo_interno"><h4>ListagemdeContratosCadastrados</h4></div><divclass="formCadastro"><h:formid="listagem"><p:dataTablevalue="#{contratoBean.lista}"var="id"rendered="#{!empty contratoBean.lista}"rules="rows"cellpadding="5"paginator="true"rows="10"rowsPerPageTemplate="10,15,20"emptyMessage="Nenhum contrato encontrado com o parâmetro especificado."><p:columnsortBy="#{id.dgco}"filterBy="#{id.dgco}"><f:facetname="header">DGCO</f:facet>#{id.dgco}</p:column><p:columnsortBy="#{id.oc}"filterBy="#{id.oc}"><f:facetname="header">OC</f:facet>#{id.oc}</p:column><p:columnsortBy="#{id.cnpj}"filterBy="#{id.cnpj}"><f:facetname="header">CNPJ</f:facet>#{id.cnpj}</p:column><p:columnsortBy="#{id.fornecedor}"filterBy="#{id.fornecedor}"><f:facetname="header">Fornecedor</f:facet>#{id.fornecedor}</p:column><p:column><f:facetname="header">DataAssinatura</f:facet><h:outputTextvalue="#{id.dataAssinatura}"><f:convertDateTimedateStyle="medium"/></h:outputText></p:column><p:column><f:facetname="header">DataVencimento</f:facet><h:outputTextvalue="#{id.dataVencimento}"><f:convertDateTimedateStyle="medium"/></h:outputText></p:column><p:column><f:facetname="header">Ativo</f:facet>#{id.ativo}</p:column><p:column><f:facetname="header">Editar</f:facet><h:commandLinktitle="Editar"><f:ajaxexecute="@this"render=":edicao"/><h:graphicImagelibrary="imagens"name="edit.png"style="border:0"/><f:setPropertyActionListenertarget="#{contratoBean.contrato}"value="#{id}"/></h:commandLink></p:column><p:column><f:facetname="header">Excluir</f:facet><h:commandLinkaction="#{contratoBean.excluir}"title="Excluir"onclick="if(!confirm('Tem certeza que deseja excluir esse contrato?')) return false"><f:ajaxexecute="@this"render=":listagem"/><h:graphicImagelibrary="imagens"name="edittrash.png"style="border:0"/><f:setPropertyActionListenertarget="#{contratoBean.contrato}"value="#{id}"/></h:commandLink></p:column></p:dataTable></h:form></div><br/></ui:define></ui:composition></html>
como disse lá no post...quando procuro por um registro na datatable pra editá-lo, me retorna o campo da primeira página. Isso só não acontece quando eu não faço filtro, entende?...se eu paginar e marcar pra editar qualquer campo, o form recupera as informações na boa...
obrigado pela ajuda!
E
esdras_63
Mesmo problema aqui
Estou com problema no filter e no sort também.
S
sfidencio
Amigo, percebi que vc ta usando f:ajax, tente usar p:ajax, pois o mesmo está integrado nos Render nativo do core do primefaces, outrosim, tome cuidado, eu tive esse problemas, se você estiver trabalhando na mesma página com bastante ajax, tente limpar a árvore de componentes, pode ser por isso que ele não ta te dando valor setado, isso se você está fazendo request ajax para o servidor, se o problema está no Client Side, tente usar os métodos javascript no Primefaces Jquery. tipo
Opa, bom dia. Primeiramente obrigado pela resposta…
Tentei usar o <p:ajax> como vc disse mas não funcionou! Na verdade, o link parou de funcionar com essa tag…
Estou seguindo um livro que faz exatamente assim…só uso ajax nesse ponto da página!
em relação à usar o jquery nesse meu problema, teria um exemplo pra me dar?
esse widgetVarDataTable.getPaginator().setPage(MINHA_PAGINA_INDEX); eu colocaria aonde no meu contexto?
Obrigado e bom dia, mais uma vez!!!
E
esdras_63
sfidencio:
Amigo, percebi que vc ta usando f:ajax, tente usar p:ajax, pois o mesmo está integrado nos Render nativo do core do primefaces, outrosim, tome cuidado, eu tive esse problemas, se você estiver trabalhando na mesma página com bastante ajax, tente limpar a árvore de componentes, pode ser por isso que ele não ta te dando valor setado, isso se você está fazendo request ajax para o servidor, se o problema está no Client Side, tente usar os métodos javascript no Primefaces Jquery. tipo
Opa! Valeu pela resposta e acho que vai dar certinho pra mim. Eu estava atrás de um código que limpasse a árvore, porém não sei o que é o MINHA_PAGINA_INDEX que você mencionou.
Mais uma vez obrigado!
L
leonardoteles
esdras_63:
sfidencio:
Amigo, percebi que vc ta usando f:ajax, tente usar p:ajax, pois o mesmo está integrado nos Render nativo do core do primefaces, outrosim, tome cuidado, eu tive esse problemas, se você estiver trabalhando na mesma página com bastante ajax, tente limpar a árvore de componentes, pode ser por isso que ele não ta te dando valor setado, isso se você está fazendo request ajax para o servidor, se o problema está no Client Side, tente usar os métodos javascript no Primefaces Jquery. tipo
Opa! Valeu pela resposta e acho que vai dar certinho pra mim. Eu estava atrás de um código que limpasse a árvore, porém não sei o que é o MINHA_PAGINA_INDEX que você mencionou.
Mais uma vez obrigado!
Opa esdras, blz?!?!
Poderia me dizer como está sua aplicação? Está parecida com a minha? Como fez pra resolver? No meu caso não funcionou a dica do colega!!!
Estou pesquisando ainda aqui e na net, mas até agora nada!!!
A luta continua!!
S
sfidencio
leonardoteles:
Opa, bom dia. Primeiramente obrigado pela resposta…
Tentei usar o <p:ajax> como vc disse mas não funcionou! Na verdade, o link parou de funcionar com essa tag…
Estou seguindo um livro que faz exatamente assim…só uso ajax nesse ponto da página!
em relação à usar o jquery nesse meu problema, teria um exemplo pra me dar?
esse widgetVarDataTable.getPaginator().setPage(MINHA_PAGINA_INDEX); eu colocaria aonde no meu contexto?
Obrigado e bom dia, mais uma vez!!!
Então eu usei isso, por exemplo, quando eu adicionava um novo registro na p:dialog, as vezes nao funcionada dar um reRender/update na DataTable, ai eu via JS, delegava para para minha datTable ir para primeira pagina sempre. Mas pelo que entendi, seu problema e no filtro paginado…, humm
<h:formid="listagem"><p:dataTablevalue="#{contratoBean.lista}"var="id"rendered="#{!empty contratoBean.lista}"rules="rows"cellpadding="5"paginator="true"rows="10"rowsPerPageTemplate="10,15,20"emptyMessage="Nenhum contrato encontrado com o parâmetro especificado.">
Amigo, me explica, como vc ta setando o item selecionado no bean para edição?
S
sfidencio
leonardoteles:
Opa, bom dia. Primeiramente obrigado pela resposta…
Tentei usar o <p:ajax> como vc disse mas não funcionou! Na verdade, o link parou de funcionar com essa tag…
Estou seguindo um livro que faz exatamente assim…só uso ajax nesse ponto da página!
em relação à usar o jquery nesse meu problema, teria um exemplo pra me dar?
esse widgetVarDataTable.getPaginator().setPage(MINHA_PAGINA_INDEX); eu colocaria aonde no meu contexto?
Obrigado e bom dia, mais uma vez!!!
Então eu usei isso, por exemplo, quando eu adicionava um novo registro na p:dialog, as vezes nao funcionada dar um reRender/update na DataTable, ai eu via JS, delegava para para minha datTable ir para primeira pagina sempre. Mas pelo que entendi, seu problema e no filtro paginado…, humm
<h:formid="listagem"><p:dataTablevalue="#{contratoBean.lista}"var="id"rendered="#{!empty contratoBean.lista}"rules="rows"cellpadding="5"paginator="true"rows="10"rowsPerPageTemplate="10,15,20"emptyMessage="Nenhum contrato encontrado com o parâmetro especificado.">
Amigo, me explica, como vc ta setando o item selecionado no bean para edição?
S
sfidencio
Desculpe pela dupla postagem, deu uma Exception no JForum, quando fui salvar, dizendo MysqlJDBC4ConnectionTransientExeception…
E
esdras_63
leonardoteles:
esdras_63:
sfidencio:
Amigo, percebi que vc ta usando f:ajax, tente usar p:ajax, pois o mesmo está integrado nos Render nativo do core do primefaces, outrosim, tome cuidado, eu tive esse problemas, se você estiver trabalhando na mesma página com bastante ajax, tente limpar a árvore de componentes, pode ser por isso que ele não ta te dando valor setado, isso se você está fazendo request ajax para o servidor, se o problema está no Client Side, tente usar os métodos javascript no Primefaces Jquery. tipo
Opa! Valeu pela resposta e acho que vai dar certinho pra mim. Eu estava atrás de um código que limpasse a árvore, porém não sei o que é o MINHA_PAGINA_INDEX que você mencionou.
Mais uma vez obrigado!
Opa esdras, blz?!?!
Poderia me dizer como está sua aplicação? Está parecida com a minha? Como fez pra resolver? No meu caso não funcionou a dica do colega!!!
Estou pesquisando ainda aqui e na net, mas até agora nada!!!
A luta continua!!
Ainda não resolvi não! Vou tentar a dica do colega. Está quase igual a sua e meu problema está no filtro, sort e paginator creio eu pois testei com poucos registros ainda. O nosso problema eu tenho quase certeza que seja uma espécie de cache nativo do Primefaces, e estou tentando achar algum código que limpe ele para construir os botões novamente a cada ajax recebido.
Vou tentar com esse código do nosso colega e volto a postar.
E
esdras_63
Isso não me traz boas lembranças… Heheheh
S
sfidencio
esdras_63:
sfidencio:
Amigo, percebi que vc ta usando f:ajax, tente usar p:ajax, pois o mesmo está integrado nos Render nativo do core do primefaces, outrosim, tome cuidado, eu tive esse problemas, se você estiver trabalhando na mesma página com bastante ajax, tente limpar a árvore de componentes, pode ser por isso que ele não ta te dando valor setado, isso se você está fazendo request ajax para o servidor, se o problema está no Client Side, tente usar os métodos javascript no Primefaces Jquery. tipo
Opa! Valeu pela resposta e acho que vai dar certinho pra mim. Eu estava atrás de um código que limpasse a árvore, porém não sei o que é o MINHA_PAGINA_INDEX que você mencionou.
Mais uma vez obrigado!
Perai, vamos separar o joio do trigo…
esse código ai é javascript, esse MINHA_PAGINA_INDex, é o numero da pagina do p:datTable no cliente, certo?, agora quanto limpar a arvore de compontes, é um método que fica do lado do servidor, que responsavel por setar null, nas propriedades da request dentro do JSF LifeCycle.
Amigo, percebi que vc ta usando f:ajax, tente usar p:ajax, pois o mesmo está integrado nos Render nativo do core do primefaces, outrosim, tome cuidado, eu tive esse problemas, se você estiver trabalhando na mesma página com bastante ajax, tente limpar a árvore de componentes, pode ser por isso que ele não ta te dando valor setado, isso se você está fazendo request ajax para o servidor, se o problema está no Client Side, tente usar os métodos javascript no Primefaces Jquery. tipo
Opa! Valeu pela resposta e acho que vai dar certinho pra mim. Eu estava atrás de um código que limpasse a árvore, porém não sei o que é o MINHA_PAGINA_INDEX que você mencionou.
Mais uma vez obrigado!
Perai, vamos separar o joio do trigo…
esse código ai é javascript, esse MINHA_PAGINA_INDex, é o numero da pagina do p:datTable no cliente, certo?, agora quanto limpar a arvore de compontes, é um método que fica do lado do servidor, que responsavel por setar null, nas propriedades da request dentro do JSF LifeCycle.
Opa! Na verdade não creio que seja esse meu problema, pois não é somente com o botão alterar, e sim com os bloquear dentre outros. Quanto a parte de limpar os inputs como descrito no blog, eu faço normalmente.
O que está acontecendo comigo é que aparentemente, quando mando via ajax recarregar a dataTable, ele pega os botões carregados anteriormente.
Exemplo: abro a tela e me exibe registro do Joaquim, do João e do Mateus. Eu escrevo Mateus no filtro e ele recarrega via ajax a table. Quando recarrega e mando alterar ou bloquear, ele faz o processo normalmente, mas como se fosse o registro do Joaquim pois ele era o primeiro da tabela anterior (como se ficasse algo em cache).
No actionListener dos botões eu uso a seguinte EL pra passar os parâmetros: #{meuBean.metodo(cliente)}. O cliente é o var que está definido na dataTable.
Funciona normalmente se eu apenas abrir a página e alterar, bloquear, desbloquear, etc. O problema só acontece quando eu uso um sort ou filtro feito por mim mesmo porém recarregando via ajax. Obs.: Ainda não testei o paginator, mas creio que ocorrerá o mesmo problema.
Obrigado novamente!
S
sfidencio
esdras_63:
sfidencio:
esdras_63:
sfidencio:
Amigo, percebi que vc ta usando f:ajax, tente usar p:ajax, pois o mesmo está integrado nos Render nativo do core do primefaces, outrosim, tome cuidado, eu tive esse problemas, se você estiver trabalhando na mesma página com bastante ajax, tente limpar a árvore de componentes, pode ser por isso que ele não ta te dando valor setado, isso se você está fazendo request ajax para o servidor, se o problema está no Client Side, tente usar os métodos javascript no Primefaces Jquery. tipo
Opa! Valeu pela resposta e acho que vai dar certinho pra mim. Eu estava atrás de um código que limpasse a árvore, porém não sei o que é o MINHA_PAGINA_INDEX que você mencionou.
Mais uma vez obrigado!
Perai, vamos separar o joio do trigo…
esse código ai é javascript, esse MINHA_PAGINA_INDex, é o numero da pagina do p:datTable no cliente, certo?, agora quanto limpar a arvore de compontes, é um método que fica do lado do servidor, que responsavel por setar null, nas propriedades da request dentro do JSF LifeCycle.
Opa! Na verdade não creio que seja esse meu problema, pois não é somente com o botão alterar, e sim com os bloquear dentre outros. Quanto a parte de limpar os inputs como descrito no blog, eu faço normalmente.
O que está acontecendo comigo é que aparentemente, quando mando via ajax recarregar a dataTable, ele pega os botões carregados anteriormente.
Exemplo: abro a tela e me exibe registro do Joaquim, do João e do Mateus. Eu escrevo Mateus no filtro e ele recarrega via ajax a table. Quando recarrega e mando alterar ou bloquear, ele faz o processo normalmente, mas como se fosse o registro do Joaquim pois ele era o primeiro da tabela anterior (como se ficasse algo em cache).
No actionListener dos botões eu uso a seguinte EL pra passar os parâmetros: #{meuBean.metodo(cliente)}. O cliente é o var que está definido na dataTable.
Funciona normalmente se eu apenas abrir a página e alterar, bloquear, desbloquear, etc. O problema só acontece quando eu uso um sort ou filtro feito por mim mesmo porém recarregando via ajax. Obs.: Ainda não testei o paginator, mas creio que ocorrerá o mesmo problema.
Obrigado novamente!
Pode ser que você está dando update nos componentes, mas está esquecendo de processá-los na requisição, verifique o atributo process, que recebe como value, @this, @form, @parent… ou o ID do componente que queira submeter na requisição.
E
esdras_63
Não deu certo. Estou largando mão do basic row selection, tem um jeito aqui com o multiple row que estou fazendo.
Obrigado mesmo assim com as respostas.
L
leonardoteles
leonardoteles:
Opa, bom dia. Primeiramente obrigado pela resposta…
Tentei usar o <p:ajax> como vc disse mas não funcionou! Na verdade, o link parou de funcionar com essa tag…
Estou seguindo um livro que faz exatamente assim…só uso ajax nesse ponto da página!
em relação à usar o jquery nesse meu problema, teria um exemplo pra me dar?
esse widgetVarDataTable.getPaginator().setPage(MINHA_PAGINA_INDEX); eu colocaria aonde no meu contexto?
Obrigado e bom dia, mais uma vez!!!
Então eu usei isso, por exemplo, quando eu adicionava um novo registro na p:dialog, as vezes nao funcionada dar um reRender/update na DataTable, ai eu via JS, delegava para para minha datTable ir para primeira pagina sempre. Mas pelo que entendi, seu problema e no filtro paginado…, humm
<h:formid="listagem"><p:dataTablevalue="#{contratoBean.lista}"var="id"rendered="#{!empty contratoBean.lista}"rules="rows"cellpadding="5"paginator="true"rows="10"rowsPerPageTemplate="10,15,20"emptyMessage="Nenhum contrato encontrado com o parâmetro especificado.">
Opa…blz?
lá na página xhtml vc pode ver, no botão de edição, que dou um “render = :edicao”…isso pq na lógica do negócio, quando chamo o método de edição na mesma página, estou chamando esse cara aqui
dependendo da ação que queira fazer, chamo uma variável de nome “recuperaFormulario”, que vai fazer o redirecionamento pra página de edição(no caso a mesma) que eu quero…vou postar meu bean aqui pra vc dar uma olhada, blz?
o list que vc está vendo chama só um método da interface ItemContratoDAO…nada demais…
que chama o método da interface ItemContratoDAO, assim…
obrigado pela ajuda!
L
leonardoteles
esdras_63:
Não deu certo. Estou largando mão do basic row selection, tem um jeito aqui com o multiple row que estou fazendo.
Obrigado mesmo assim com as respostas.
opa…vi que vc conseguiu resolver com o multiple row…mas como vc faz pra editar o campo com esse componente?..pelo que entendi, ele só exibe os valores da linha!!
tem como editár o campo com ele?
E
esdras_63
leonardoteles:
esdras_63:
Não deu certo. Estou largando mão do basic row selection, tem um jeito aqui com o multiple row que estou fazendo.
Obrigado mesmo assim com as respostas.
opa…vi que vc conseguiu resolver com o multiple row…mas como vc faz pra editar o campo com esse componente?..pelo que entendi, ele só exibe os valores da linha!!
tem como editár o campo com ele?
Não entendi muito bem sua pergunta. Eu fis da mesma forma que faria com o instant row, porém apenas pegando o primeiro de todos os selecionados ou pegando nenhum caso o cara selecione 2 ou mais. Você pode tentar usar instant row, não da certo aí? Eu não podia, pois já estava usando o multiple row pra outras finalidades e não tem como deixar os dois juntos.
L
leonardoteles
leonardoteles:
esdras_63:
Não deu certo. Estou largando mão do basic row selection, tem um jeito aqui com o multiple row que estou fazendo.
Obrigado mesmo assim com as respostas.
opa…vi que vc conseguiu resolver com o multiple row…mas como vc faz pra editar o campo com esse componente?..pelo que entendi, ele só exibe os valores da linha!!
tem como editár o campo com ele?
Aqui, no meu caso, tenho uma coluna na tabela com um botão de edição da linha…queria saber se tem como editar essa linha utilizando o instant row?..como estou tentando resolver outro problema aqui, não tentei esse…se vc confirmar que não dá, nem vou perder meu tempo tentando depois…
obrigado!!
E
esdras_63
leonardoteles:
leonardoteles:
esdras_63:
Não deu certo. Estou largando mão do basic row selection, tem um jeito aqui com o multiple row que estou fazendo.
Obrigado mesmo assim com as respostas.
opa…vi que vc conseguiu resolver com o multiple row…mas como vc faz pra editar o campo com esse componente?..pelo que entendi, ele só exibe os valores da linha!!
tem como editár o campo com ele?
Aqui, no meu caso, tenho uma coluna na tabela com um botão de edição da linha…queria saber se tem como editar essa linha utilizando o instant row?..como estou tentando resolver outro problema aqui, não tentei esse…se vc confirmar que não dá, nem vou perder meu tempo tentando depois…
obrigado!!
Tem sim! Da uma olhadinha nos exemplos do prime…
I
iomargorges
Você já tentou colocar id nas colunas?
<p:column id=“colNumero” sortBy="#{item.numero}"/>
Pode resolver seu problema
L
leonardoteles
opa…voltando ao tópico pra dizer que não consegui sair desse problema ainda!!
colocando o id não funciona…será que alguém teria outra idéia de como resolver essa situação!!!
obrigado!!!
E
esdras_63
leonardoteles:
opa…voltando ao tópico pra dizer que não consegui sair desse problema ainda!!
colocando o id não funciona…será que alguém teria outra idéia de como resolver essa situação!!!
obrigado!!!
Eu também não consegui resolver, mas contornei com outra opção. Tente usar o instant row selection ou multiple row, tem vários exemplos desses no site do primefaces.
L
leonardoteles
opa…blz?
utilizando o filtering e o sorting, minha aplicação está funcionando na boa…o problema é que quando filtro.
O registro que eu seleciono não vem…o form é populado pelo pelos dados da linha corresposndente dá primeira página!!
Quando eu vou navegando sem filtrar nada, ele funciona sem problema!!
Usar os ‘instant row selection ou multiple row’ não resolveria minha situação por que a tabela tem muitos dados…o usuário precisa de uma ferramenta de busca pra poder automatizar o processo dele, sacou?!?
De qualquer forma, muito obrigado pela idéia…
Abraço!!!
L
leonardoteles
opa galera, bom dia!!
venho dizer que consegui resolver o meu problema da forma como eu queria/precisava.
sfidencio, sua dica foi a que me salvou. O ajax estava setando a linha correspondente da primeira página pq eu estava renderizando com o <f:ajax execute="@this". Quando mudei para <f:ajax execute="@form" ele passou a pegar o da linha que eu busco no filtering e no sorting tbm…