[RESOLVIDO]Link dentro do rich:dataTable não funciona porque?
22 respostas
R
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.
R
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
R
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 !
H
Hebert_Coelho
Teria como você postar mais da página? Incluindo declaração do form?
R
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>
D
Diguinho.Max
tente colocar o dataTable dentro de um <a4j:outputPanel id"teste" ajaxRendered="true">Sua table</a4j:outputPanel>
R
rapha.java
CONSEGUI arrumar mudei o escopo do meu BEAN para session e funcionou !
H
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. ^^
D
Diguinho.Max
è com o escopo de sessao se nao tomar cuidado você irá consumir muita memoria mesmo ;/
como nosso amigo disse!
R
rogeriotadim1
Alguem teria uma sugestão de como resolver o problema sem alterar o escopo do bean para session?
H
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!
R
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…