2010-01-23 3 views
1

Supposons qu'un résultat de requête existe et qu'il soit resultSet avec un champ disponible comme templateId.Accès à la valeur Map dans une boucle JSTL distincte

De plus, une carte 'templateMap' existe avec les clés templatedId.

Je ne peux pas obtenir le résultat de ce qui suit, aucune aide n'a été appréciée.

<c:foreach var="row" items="${resultSet.rows}"> 
    <c:out value="${templateMap[row.templateId]}" /> 
</c:foreach> 

Note: ceci est une application d'horreur de codage, dans lequel l'ensemble de résultats ci-dessus est le résultat de <sql:query>.

Le suivi ne fonctionne pas non plus.

<c:foreach var="row" items="${resultSet.rows}"> 
    <c:set var="tmplId" value="${row.templateId}" /> 
    <c:out value="${templateMap[tmplId]}" /> 
</c:foreach> 
+1

Où est exactement la 'Map' de cette histoire? Le '$ {template}' est juste une ligne du '$ {resultSet}'. Ne remplacez-vous pas une 'Map 'déjà existante avec le même nom dans la portée? Ou confondez-vous '$ {resultSet}' comme étant le 'Map'? – BalusC

+0

Merci pour l'édition. J'ai rétabli ma réponse :) – BalusC

Répondre

2

Le code que vous avez publié (et édité) est syntaxiquement valide, donc le problème se situe ailleurs. Pour commencer, le suffixe Id me fait penser qu'il s'agit d'un Number. Fait, les nombres non décimaux dans EL par défaut long. Ainsi, si c'était un Map<Integer, Integer>, alors ce code ne fonctionnera pas. Vous devez avoir un Map<Long, Long> ou Map<Long, Integer> pour le faire fonctionner. Je ne sais pas comment je devrais interpréter votre formulation "coding horror application", mais je parie que vous savez déjà que l'utilisation de JSTL SQL taglib à d'autres fins que le prototypage rapide est considérée comme une très mauvaise pratique;) Cette logique appartient à classes Java réelles dans la couche d'accès aux données.

+0

Merci pour ça, ça m'a mis sur la bonne voie. La carte est en fait et le templateId est BigDecimal. En ce qui concerne l'horreur de codage. J'ai travaillé sur diverses applications d'une myriade de complexités dans ma carrière. Celui-ci prend le gâteau ... Tout le monde doit faire des choses sales une fois de temps en temps ... :) – AM01

Questions connexes