2010-08-23 6 views
0

J'essaie d'éviter d'utiliser c: forEach parce que j'ai entendu dire que JSTL ne se mélange pas bien dans la phase de rendu du JSF ... Je ne suis pas sûr de cette revendication du tout. Au contraire, j'ai dû utiliser c: forEach au lieu de ui: répéter dans de nombreux cas parce que le ui: repeate ne pas simplement itérer sur la collection .. cela est arrivé dans de nombreux cas que je ne peux pas isoler la raison, et dans ces cas c: forEach était un remplacement très bien comporté. Ma question concerne le cas où c: forEach ne se comporte pas bien, et ui: repeat ne renvoie rien de la collection (même s'il répète les balises html de décoration le nombre correct de fois). Ce qui arrive, c'est que parfois les composants JSF créés à l'intérieur de c: forEach sont dispersés sur toute la page, laissant les balises HTML de décoration dans le corps de la c: forEach vides et restituées ailleurs dans la page. Cela ne se produit que quelques fois et surtout lorsque vous effectuez un rafraîchissement en utilisant F5 (qui est corrigé la plupart du temps avec une actualisation ultérieure en utilisant Ctrl + F5).c: forEach vs ui: repeat (aka glace: panelSeries)

Je suis totalement perplexe et aimerais avoir des idées sur ce qui se passe .. pourquoi ui: repeat (et ice: panelSeries) ne récupère pas les valeurs de la collection ?? pourquoi est-ce que c: forEach scattering est contenu partout (semble comme une condition de concurrence en construisant l'arbre de composant de JSf ... peut-être que le rendu devrait attendre c: forEach et pas)? Pourquoi est-ce arrivé seulement dans ce cas ??

Je suis désolé de ne pas inclure d'extraits de code ou de captures d'écran car je ne sais pas quoi inclure .. le problème est trop général. Mais vous pouvez être tout à fait confiant que ma syntaxe est correcte ... J'ai déjà vérifié cela .. et je n'utilise pas la variable status (ce qui provoque trop de problèmes dans ui: repeat).

+0

Venez .. S'il vous plaît fournir un exemple pour: cela est arrivé dans de nombreux cas que je ne peux pas isoler la raison – Dejell

Répondre

1

ui: repeate ne suffit pas itérer sur la collection

Le code suivant fonctionne:

<ui:repeat value="#{myCollection}" var="item"> 
    <h:outputText value="#{item}" /> 
</ui:repeat> 

Pourquoi est-il arrivé que dans ce cas ??

sans exemple de this case il est difficile de savoir ..

Cependant, c:forEach vs ui:repeat document peut vous aider à trouver une raison.