Pessoal!
Alguém sabe o segredo pra se usar um commandLink dentro de um dataTable no Myfaces???
Muuuuuuuito obrigads
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
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
<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
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 …