commandLink dentro de um dataTable? Como?

20 respostas
andre_guitar7

Pessoal!

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

Muuuuuuuito obrigads

20 Respostas

urubatan

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

andre_guitar7

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>

urubatan

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>

andre_guitar7

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…

andre_guitar7

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>

urubatan

tu ta usando myfaces? qual versão?

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

andre_guitar7

To usando a 1.1.5-SNAPSHOT

urubatan

tenta com a 1.1.3 aqui ta funcionando beleza …

andre_guitar7

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…

andre_guitar7

Interessante que o commandLink fora do dataTable funciona…

andre_guitar7

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

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;
	}
	
}
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 no formulário ele imprime o id normalmente...

urubatan

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 …

andre_guitar7

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

andre_guitar7

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”

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 :smiley:

andre_guitar7

Alguém tem alguma idéia?

vlws

andre_guitar7

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

Vou testar

andre_guitar7

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>

urubatan

não substituiu não …
ta igual …

andre_guitar7

Oooops, agora sim:

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

Criado 21 de agosto de 2006
Ultima resposta 22 de ago. de 2006
Respostas 20
Participantes 2