commandLink dentro de um dataTable? Como?

Pessoal!

Alguém sabe o segredo pra se usar um commandLink dentro de um dataTable no Myfaces???

Muuuuuuuito obrigads

num tem segredo nenhum, é só colocar la que funciona :smiley:
qual exatamente o problema?

Bem … eu tentei fazer um e quando eu clico no link não faz nada… e olha só o resultado da busca … não encontrei alguma solução… tá assim:

<h:dataTable border="1" var="person" value="#{PersonManaged.listOfSearch}" rendered="#{PersonLoginManaged.itIsInGroupPersonManager == true}"> <t:column> <f:facet name="header"> <h:outputText value="ID" /> </f:facet> <h:outputText value="#{person.id}" /> </t:column> <t:column> <f:facet name="header"> <h:outputText value="Nome" /> </f:facet> <h:outputText value="#{person.name}" /> </t:column> <t:column> <f:facet name="header"> <h:outputText value="Login" /> </f:facet> <h:outputText value="#{person.login}" /> </t:column> <t:column> <h:form style="margin=0px;"> <h:commandLink action="#{PersonManaged.groupFormUpdate}"> <h:outputText value="Grupos" /> <t:updateActionListener property="#{PersonManaged.id}" value="#{person.id}" /> </h:commandLink> </h:form> </t:column> </h:dataTable>

esta dataTable esta dentro de um h:form?
isto aqui funciona legal :smiley:

<h:form> <t:dataTable sortable="true" renderedIfEmpty="false" value="#{report.emailsDevolvidos}" border="0" styleClass="dataTable" rowClasses="dataOdd,dataEven" var="n" id="table" rows="50" preserveDataModel="false"> <f:facet name="header"> <h:outputText value="Relatório de e-mails devolvidos" /> </f:facet> <t:column groupBy="true"> <f:facet name="header"> <t:outputText value="Newsletter" /> </f:facet> <t:outputText value="#{n.newsletter}" /> </t:column> <t:column> <f:facet name="header"> <t:outputText value="E-mail" /> </f:facet> <h:commandLink action="#{enderecoM.corrigir}"> <t:outputText value="#{n.endereco}" /> <t:updateActionListener property="#{enderecoM.emailId}" value="#{n.emailId}" /> </h:commandLink> </t:column> <t:column> <f:facet name="header"> <t:outputText value="Mensagem" /> </f:facet> <t:outputText value="#{n.mensagem}" /> </t:column> </t:dataTable> </h:form>

A propósito, estou fazendo um teste com updateActionListener:

<h:form style="margin=0px;" rendered="#{!empty PersonLoginManaged.id}"> <table> <tr> <td> <h:outputText value="Título: " /> </td> <td> <h:inputText id="login" size="15" value="#{CommentManaged.title}" /> </td> </tr> <tr> <td> <h:outputText value="Texto: " /> </td> <td> <h:inputTextarea value="#{CommentManaged.text}" /> </td> </tr> <tr> <td colspan="2" align="right"> <h:commandLink action="#{CommentManaged.insert}"> <t:outputText value="Inserir Comentário" /> <t:updateActionListener property="#{CommentManaged.articleId}" value="#{ArticleManaged.id}" /> </h:commandLink> </td> </tr> </table> </h:form>

Mas o CommentManaged.articleId recebe null…

Fiz o teste que vc falou, não deu certo… ele ficou na mesma tela:

<h:form> <h:dataTable border="1" var="person" value="#{PersonManaged.listOfSearch}" rendered="#{PersonLoginManaged.itIsInGroupPersonManager == true}"> <t:column> <f:facet name="header"> <h:outputText value="ID" /> </f:facet> <h:outputText value="#{person.id}" /> </t:column> <t:column> <f:facet name="header"> <h:outputText value="Nome" /> </f:facet> <h:outputText value="#{person.name}" /> </t:column> <t:column> <f:facet name="header"> <h:outputText value="Login" /> </f:facet> <h:outputText value="#{person.login}" /> </t:column> <t:column> <h:commandLink action="#{PersonManaged.groupFormUpdate}"> <t:outputText value="Grupos" /> <t:updateActionListener property="#{PersonManaged.id}" value="#{person.id}" /> </h:commandLink> </t:column> </h:dataTable> </h:form>

tu ta usando myfaces? qual versão?

a um tempo atraz aconteceu parecido comigo, era um bug do myfaces no internet explorer …

To usando a 1.1.5-SNAPSHOT

tenta com a 1.1.3 aqui ta funcionando beleza …

Alterei pra 1.1.3 e não funcionou… é ruim pq não dá nenhuma exception, não tem como descobrir o que tá errado…

Interessante que o commandLink fora do dataTable funciona…

Acho que esse MyFaces precisa melhorar muito ainda. Outro problema que eu tava vendo… se eu tenho um ManagedBean dessa forma:

[code]public class CommentManaged extends Comment {

private Long articleId;

public void setArticleId( Long id ){
	System.out.println( "ID:" + id );
	this.articleId = id;
}
public Long getArticleId(){
	return this.articleId;
}

}[/code]
Peço para imprimir no setArticleId para debugar se está recebendo o Id… fazendo teste:

<h:form> <h:outputText value="Título: " /> <h:inputText id="title" size="15" value="#{CommentManaged.title}" /> <h:commandLink action="#{CommentManaged.insert}"> <t:outputText value="Alterar Artigo: #{ArticleManaged.title}" /> <t:updateActionListener property="#{CommentManaged.articleId}" value="#{ArticleManaged.id}" /> </h:commandLink> </h:form>
Ele passa pelo método setArticleId( Long id ) só que no System.out.println() ele imprime ID: null… se eu faço o teste do formulário dessa forma:

<h:form> <h:outputText value="Título: " /> <h:inputText id="title" size="15" value="#{CommentManaged.title}" /> <h:commandLink action="#{CommentManaged.insert}"> <t:outputText value="Alterar Artigo: #{ArticleManaged.title}" /> <t:updateActionListener property="#{CommentManaged.articleId}" value="5" /> </h:commandLink> </h:form>
Ele imprime o 5 no System.out.println()… é muito estranho

…se eu coloco <t:outputText value=“Id: #{ArticleManaged.id}” /> no formulário ele imprime o id normalmente…

isto com certeza não e problema no myfaces …
tenta colocar um h:outputText value="{ArticleManaged.id}"
na tela pra ver o que acontece, acho que ele ta recebendo null, pq o valor que tu ta passando é null …

Foi o que eu fiz e disse no post anterior… isso que eu to achando estranho… eu devo estar fazendo algo errado… estranho que no teste do output ele imprime o id na tela

Olha como eu fiz agora:

<h:form> <h:outputText value="Título: " /> <h:inputText id="title" size="15" value="#{CommentManaged.title}" /> <h:commandLink action="#{CommentManaged.insert}"> <t:outputText value="Alterar Artigo: #{ArticleManaged.title} com id #{ArticleManaged.id}" /> <t:updateActionListener property="#{CommentManaged.articleId}" value="#{ArticleManaged.id}" /> </h:commandLink> </h:form>

Ele imprime “Alterar Artigo: titulo com id 2”

e o updateActionListener continua não funcionando?
a ultima tentativa sem ver o bagulho não funcionando seria substituir o h:commandLink por um t:commandLink :smiley:

Alguém tem alguma idéia?

vlws

[quote=urubatan]e o updateActionListener continua não funcionando?
a ultima tentativa sem ver o bagulho não funcionando seria substituir o h:commandLink por um t:commandLink :D[/quote]
Vou testar

Substitui e nada:

<h:form> <h:outputText value="Título: " /> <h:inputText id="title" size="15" value="#{CommentManaged.title}" /> <h:commandLink action="#{CommentManaged.insert}"> <t:outputText value="Alterar Artigo: #{ArticleManaged.title} com ID: #{ArticleManaged.id}" /> <t:updateActionListener property="#{CommentManaged.articleId}" value="#{ArticleManaged.id}" /> </h:commandLink> </h:form>

não substituiu não …
ta igual …