2009-04-30 7 views
2

Je voudrais faire quelque chose comme ceci:éviter les boucles xml dans jstl

<x:out select="$productXML/product/sizes/size[<c:out value='${param.sizeIndex}'/>]" escapeXml="false"/> 

mais je pense que la seule façon de le faire est comme ceci:

<x:forEach var="size" begin="${param.sizeIndex}" end="${param.sizeIndex+1}" select="$productXML/product/sizes/*"> 
    <x:out select="$size" escapeXml="false"/> 
</x:forEach> 

Est-il possible de le faire ça ressemble plus à la façon dont je veux?

Répondre

1

Merci à GClaramunt [utilisateur 98867] me mettre sur le droite, j'ai découvert la bonne réponse:

<x:out select="$productXML/product/sizes/size[$param:sizeIndex]" escapeXml="false"/> 
1

Vous ne savez pas ce que vous essayez de résoudre, mais êtes-vous sûr de vouloir utiliser le <c:out value='${param.sizeIndex}'/> dans le '[]'? JSTL doit être traitée en même temps, et vous devriez être capable d'écrire quelque chose comme:

<x:out select="$productXML/product/sizes/size[param.sizeIndex]" escapeXml="false"/> 

Ou en utilisant peut-être <c:set var="sIdx" value="${param.sizeIndex}" />

Mais je ne suis pas tout à fait familier avec les balises XML JSTL à 100% vous ...

+0

Fait sens. J'ai essayé cependant, et ça ne marche pas. Au moins, il ne produit pas d'erreur de compilation, mais il échoue silencieusement. – Dennis

1

Je pense avoir trouvé ce que vous cherchez here:

<x:set var="abook" 
select="$applicationScope.booklist/ 
     books/book[@id=$param:bookId]" /> 
    <h2><x:out select="$abook/title"/></h2> 
+0

Merci beaucoup pour votre aide. Je vous donnerais 75% de crédit pour cette réponse. Cela m'a mis sur la bonne voie, mais ce n'est pas exactement la bonne réponse parce que ma question n'avait rien à voir avec les livres, ou les variables telles que 'abook', et je n'utilise pas les attributs 'id'. – Dennis