Rich Faces DataTable não renderiza [RESOLVIDO]

7 respostas
ceduardo.roque

Boa tarde pessoal, tudo bem?

Estou fazendo uma tela em JSF que usa um data table do RichFaces.

Acontece que eu quero que ele renderize somente se a minha lista de coleções tiver dados.
Efetivamente as linhas de registros nao aparecem, mas o facet (f:facet) de header que contém os registros ficam aparecendo mesmo sem registro.

Eu vi vários exemplos na net e aqui no GUJ mesmo para usar o atributo rendered do componente, mas aparentemente ele nao está funcionando.

Eu tentei fazer assim:

rendered="#{not empty bean.colecao}"
rendered="#{!empty bean.colecao}"
rendered="#{bean.itensDaColecao > 0}"

Mas nao rolou… ele não renderiza na primeira vez, e mesmo que a coleção contenha dados depois o data table nunca mais é renderizado. :cry:

Vocês sabem se este comportamento é normal? Pra mim bastaria queo facet header nao renderizasse, e que só renderizasse após a coleção ter valores.

Alguem já passou por isso? :?:

Obrigado!

ceduardo.roque

7 Respostas

dmandrak

Cara, eu já desisti de um datatable uma vez.

Ele funcionava bem, mas quando tentava navegar pelas tabelas e talz ele normalmente bugava era por ae, por causa de renderização…

Não posso te ajudar, apenas mostrar minha compreensão do seu problema :wink:

Você não é o único! uaeuhaehuaehuaeuaeae

Michel_Sancovich

segue uma parte do meu código utilizando JBoss Seam:

<rich:panel>
        <f:facet name="header">Projeto search results</f:facet>
    <div class="results" id="projetoList">

    <h:outputText value="The projeto search returned no results."
               rendered="#{empty projetoList.resultList}"/>

    <rich:dataTable id="projetoList"
                var="projeto"
              value="#{projetoList.resultList}"
           rendered="#{not empty projetoList.resultList}">
        <h:column>
   .
  .
   .
    .
   .
    .
   etc
ceduardo.roque
Michel_Sancovich:
segue uma parte do meu código utilizando JBoss Seam:
<rich:panel>
        <f:facet name="header">Projeto search results</f:facet>
    <div class="results" id="projetoList">

    <h:outputText value="The projeto search returned no results."
               rendered="#{empty projetoList.resultList}"/>

    <rich:dataTable id="projetoList"
                var="projeto"
              value="#{projetoList.resultList}"
           rendered="#{not empty projetoList.resultList}">
        <h:column>
   .
  .
   .
    .
   .
    .
   etc

entao.. na sua aplicação, o seu data table é renderizado quando o seu resultlist passa a ter registros?
Na minha aplicação, o f:facet header fica renderizado mesmo que a tabela nao possua registros, e se eu coloco o atributo rendered="#{not empty projetoList.resultList}" que nem você, quando o resultList é renderizado pela primeira vez, ele não renderizado (correto, pois não há registros). Mas quando passa a ter, ele simplesmente nao se renderiza.

É como se ele ele nao renderizasse o componente novamente.

Obrigado pela resposta.

ceduardo.roque

ceduardo.roque

dmandrak:
Cara, eu já desisti de um datatable uma vez.

Ele funcionava bem, mas quando tentava navegar pelas tabelas e talz ele normalmente bugava era por ae, por causa de renderização…

Não posso te ajudar, apenas mostrar minha compreensão do seu problema :wink:

Você não é o único! uaeuhaehuaehuaeuaeae

Hum… hehe… Entao… se eu nao resolver eu vou ter que fazer na mão mesmo… :frowning:

Mas obrigado pela compreensão ae!

Abraços

ceduardo.roque

ceduardo.roque

dmandrak:
Cara, eu já desisti de um datatable uma vez.

Ele funcionava bem, mas quando tentava navegar pelas tabelas e talz ele normalmente bugava era por ae, por causa de renderização…

Não posso te ajudar, apenas mostrar minha compreensão do seu problema :wink:

Você não é o único! uaeuhaehuaehuaeuaeae

Hum… hehe… Entao… se eu nao resolver eu vou ter que fazer na mão mesmo… :frowning:

Mas obrigado pela compreensão ae!

Abraços

ceduardo.roque

ceduardo.roque

Ola Pessoal!

eu resolvi o problema colocando trocando o componente do command button pelo default do faces. :?

Antes eu estava usando o componente a4j:commandButton, e no seu atributo reRender eu pedia para renderizar a tabela novamente.
Ainda não descobri porque, mas este fato fazia que o reRender nao funcionasse, o que fazia com que a tabela nao fosse renderizada.

Após trocar o command button para <h:commandButton> e colocar dentro dele (nested) a tag a4j:support, e nesta sim colocar a tag reRender, para renderizar a tabela, daí funcionou. ( :?: :?: :?: ).

De qualquer forma, agradeço a ajuda de vocês!

Forte abraço! :smiley:

ceduardo.roque

M

O seu rendered faz validação, ou seja, é dinâmico.
Então ele acaba funcionando somente a primeira vez já que o reRender não vai dar refresh na página, então não há como testar a validação.
Já apanhei utilizando essas duas propriedades combinadas também!

Criado 24 de setembro de 2008
Ultima resposta 9 de mai. de 2011
Respostas 7
Participantes 4