2010-05-08 3 views
0

J'ai dataTable dans ma page. Au départ, je veux qu'il soit caché, et montrer après avoir récupéré des données par requête AJAX. Je sais comment extraire des données et les mettre dans une table, mais je ne sais pas comment montrer une table si elle est cachée. Voici le code:Rendre un élément visible sur ajax dans JSF2

<h:commandButton value="aa"> 
    <f:ajax execute="from to validTo" render="transportOffers"/> 
</h:commandButton> 
<p:dataTable id="transportOffers" value="${cargoOffer.transportsForCargo}" var="transport"> 
    <p:column> 
    <h:outputText value="${transport.company}"/> 
    </p:column> 
</p:dataTable> 

Le tableau est visible au départ, même si elle est vide. Si je mets rendered="false" il est invisible, et reste invisible aussi après la requête AJAX.

Comment puis-je le rendre initialement caché, et apparaître après remplissage avec des données?

Répondre

2

Vous pouvez essayer d'avoir le dataTable de rendre conditionnelle en fonction de la taille de la liste:

rendered = "#{cargoOffer.transportsForCargo.size() != 0}" 
+0

Cela fonctionne presque :) Problème est que quand il n'est pas rendu initialement, la réponse ajax veut le mettre à jour, mais ne parvient pas à le trouver. La solution consiste à envelopper dans quelque chose d'autre, et mettre à jour cette autre chose. Merci! – amorfis

1

Je pense que si rendered=false alors l'élément est pas créé, de sorte que la requête AJAX ne peut pas trouver.

Questions connexes