[RESOLVIDO]Link dentro do rich:dataTable não funciona porque?
22 respostas
rapha.java
Bom Dia,
Já vi em alguns casos que muitos estão com problemas em usar um commandlink dentro do Datatable.
Então queria saber porque isto ocorre? Tenho um rich:datatable que lista alguns produtos, e um dos campos é um link chamado "detalhe", que ao ser clicado deveria chamar um metodo e mudar de página, mas esse link não faz absolutamente nada! Testei fora do datatable e não funcionou, procurei em varios sites (richfaces demo, outros foruns e aqui) mas só descobri que não funciona, mas como corrigir isto ?
<rich:dataTableid="tbFuncionarios"value="#{funcVisao.funcionariosConsulta}"var="func"style="width: 100%"><f:facetname="header"><h:outputLabelvalue="Funcionarios"for="tbFuncionarios"/></f:facet><rich:column><f:facetname="header"><h:outputLabelvalue="Nome"/></f:facet><h:outputTextvalue="#{func.nome}"/></rich:column><rich:column><f:facetname="header"><h:outputLabelvalue="CPF"/></f:facet><h:outputTextvalue="#{func.cpf}"/></rich:column><rich:column><f:facetname="header"><h:outputLabelvalue="RG"/></f:facet><h:outputTextvalue="#{func.rg}"/></rich:column><rich:column><f:facetname="header"><h:outputLabelvalue="Data de Nascimento"/></f:facet><h:outputTextvalue="#{func.dataNascimento}"><f:convertDateTimepattern="dd/MM/yyy"/></h:outputText></rich:column><rich:column><f:facetname="header"><h:outputLabelvalue="Salario"/></f:facet><h:outputTextvalue="#{func.salario}"/></rich:column><rich:column><f:facetname="header"><h:outputLabelvalue="Ações"/></f:facet><center><a4j:commandLinkaction="#{funcVisao.excluirFuncionario}"render="outFuncionarios"style="border: none;"><h:graphicImagestyleClass="graphicImage"library="images"name="excluir.png"/><f:setPropertyActionListenertarget="#{funcVisao.funcionario}"value="#{func}"></f:setPropertyActionListener></a4j:commandLink><h:commandLinkaction="#{funcVisao.alterar}"><h:graphicImagestyleClass="graphicImage"library="images"name="alterar.png"/><f:setPropertyActionListenertarget="#{funcVisao.funcionario}"value="#{func}"></f:setPropertyActionListener></h:commandLink></center></rich:column></rich:dataTable>
aqui são os metodos fiz com dois tipos de link um com a4j e outro com h:commandLink
publicvoidexcluirFuncionario(){
funcionariosConsulta.remove(funcionario);funcionarios.remove(funcionario);exibirMensagem("Funcionario excluido com sucesso.");}
publicvoidalterarFuncionario(ActionEvente){
for(inti=0; i < funcionarios.size(); i++) {Funcionariof=funcionarios.get(i);if(f.getCpf().equals(funcionario.getCpf())){
funcionarios.set(i,getFuncionario());exibirMensagem("Funcionário alterado com sucesso.");}else{
exibirMensagem("Não foi possivel alterar.");}
}
}
espero ter ajudado.
rapha.java
jakefrog:
Vc está tendo algum erro no console?
Não dá nenhum erro ! Quando é o h:commandLInk ele só recarrega a página, quando é o a4j:commandLink não acontece nada !
O cosnole não apresenta nenhum erro!
A
alex.brito
Então com o h:commandLInk ele executa o método, correto ?
Com o a4j:commandLink ele também executa o método ???
Não falta o render no a4j:cammandLink ???
[]'s
rapha.java
alex.brito:
Então com o h:commandLInk ele executa o método, correto ?
Com o a4j:commandLink ele também executa o método ???
Não falta o render no a4j:cammandLink ???
[]'s
Não, o link não esta chamando o metodo ! tentei em outros links e funcionou mas este dentro do datatable não funcionou !
Hebert_Coelho
Teria como você postar mais da página? Incluindo declaração do form?
rapha.java
jakefrog:
Teria como você postar mais da página? Incluindo declaração do form?
PÁGINA INTEIRA
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@tagliburi="http://java.sun.com/jsf/core"prefix="f"%><%@tagliburi="http://java.sun.com/jsf/html"prefix="h"%><%@tagliburi="http://richfaces.org/rich"prefix="rich"%><%@tagliburi="http://richfaces.org/a4j"prefix="a4j"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><f:view><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Cotações em andamento</title></head><body><a4j:keepAlivebeanName="detalhe"/><h:form><%@includefile="/include/pageTop.jsp"%><rich:toolBarheight="30px"width="100%"><h:outputTextvalue="Pedidos em Andamento"/></rich:toolBar><rich:spacerheight="5"/><h:panelGridid="gridPesquisa"columns="2"><rich:columnGroup><rich:column><h:outputLabelvalue="Status: "for="cboStatus"/></rich:column><rich:column><h:selectOneMenuid="cboStatus"style="width:350px;text-align:left;"valueChangeListener="#{andamento.listarGrid }"><f:selectItemsvalue="#{andamento.status }"/><a4j:supportevent="onchange"reRender="tableResult"/></h:selectOneMenu></rich:column></rich:columnGroup><rich:columnGroup><rich:column><h:outputLabelvalue="Fornecedor: "for="txtFornecedor"/></rich:column><rich:column><h:inputTextsize="40"id="txtFornecedor"value="#{andamento.model.fornecedor }"/><h:outputLabelvalue="Nº Cotação: "for="cotacao"/><h:inputTextid="cotacao"size="30"value="#{andamento.model.cotacao }"/></rich:column></rich:columnGroup><rich:columnGroup><rich:column><h:outputLabelvalue="Atendimento"for="txtAtendimento"/></rich:column><rich:column><h:inputTextsize="40"id="txtAtendimento"value="#{andamento.model.atendimento }"/></rich:column></rich:columnGroup><a4j:commandButtonvalue="Pesquisar"reRender="tableResult"action="#{andamento.pesquisar}"/></h:panelGrid><rich:spacerheight="10px"/><rich:toolBar><h:outputTextvalue="Resultados"/></rich:toolBar><rich:dataTableid="tableResult"var="result"border="1"width="100%"value="#{andamento.informacoes}"><rich:column><h:graphicImagevalue="images/bola_amarela.gif"rendered="#{result.status=='Em Atenção'}"/><h:graphicImagevalue="images/bolaVerde.jpg"rendered="#{result.status=='No Prazo'}"/><h:graphicImagevalue="images/bolavermelha.jpg"rendered="#{result.status=='Em Atraso'}"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Cotação"/></f:facet><h:outputTextvalue="#{result.cotacao }"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Atendimento"/></f:facet><h:outputTextvalue="#{result.atendimento }"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Marca"/></f:facet><h:outputTextvalue="#{result.marca }"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Peça"/></f:facet><h:outputTextvalue="#{result.peca }"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Prazo"/></f:facet><h:outputTextvalue="#{result.prazo }"/></rich:column><rich:column><f:facetname="header"><h:outputTextvalue="Detalhe"/></f:facet><a4j:commandLinkaction="#{detalhe.carregarDetalhes}"value="#{result.detalhe }"id="cotacao"><f:setPropertyActionListenervalue="#{result}"target="#{detalhe.index }"/></a4j:commandLink></rich:column></rich:dataTable><a4j:commandButtonvalue="Voltar"id="btnVoltar"/></h:form></body></html></f:view>
Diguinho.Max
tente colocar o dataTable dentro de um <a4j:outputPanel id"teste" ajaxRendered="true">Sua table</a4j:outputPanel>
rapha.java
CONSEGUI arrumar mudei o escopo do meu BEAN para session e funcionou !
Hebert_Coelho
Só tome cuidado que colocando seu MBean para sessão, cada usuário terá um objeto desse cara na sessão. Com isso a memória consumida pela sua app iria aumentar bastante.
Ainda mais se a lista também está salva na sessão. ^^
Diguinho.Max
è com o escopo de sessao se nao tomar cuidado você irá consumir muita memoria mesmo ;/
como nosso amigo disse!
rogeriotadim1
Alguem teria uma sugestão de como resolver o problema sem alterar o escopo do bean para session?
Hebert_Coelho
rogeriotadim:
Alguem teria uma sugestão de como resolver o problema sem alterar o escopo do bean para session?
ViewScoped eh uma saída.
P
pcsantana
Olá amigos, aproveitando o tópico para não abrir um novo… o servidor usado de vocês é o Tomcat??
estou tendo o mesmo, com a unica diferença que estou usando o primefaces… mas comigo nem Session ou ViewScoped funciona =/
perguntei do servidor, pq tenho uma outra aplicação com o Jboss 7 e nele funciona normal…
se alguem tiver uma sugestão…
Obrigado!
rogeriotadim1
pcsantana:
Olá amigos, aproveitando o tópico para não abrir um novo… o servidor usado de vocês é o Tomcat??
estou tendo o mesmo, com a unica diferença que estou usando o primefaces… mas comigo nem Session ou ViewScoped funciona =/
perguntei do servidor, pq tenho uma outra aplicação com o Jboss 7 e nele funciona normal…
se alguem tiver uma sugestão…
Obrigado!
No meu caso é o JBoss 6.
P
pcsantana
depois de fuçar um pouco, descobri na “sorte” o problema…
estou usando facelets, e no meu template, tem um h:form que abrange tudo… não sei dizer porque, mas com ele ali não funciona…
Imagino eu que seja porque, como na pagina que usa o template tbm tem um form, acaba ficando um form dentro do outro… dai o update="@form" acaba se perdendo…