2009-01-19 7 views
15

Je parcourt une liste d'éléments et j'aimerais obtenir un paramètre de requête basé sur l'index de l'élément. Je pourrais facilement le faire avec un scriptlet comme fait ci-dessous, mais je voudrais utiliser le langage d'expression.Comment accéder dynamiquement aux paramètres de la requête avec JSP EL?

<c:forEach var="item" items="${list}" varStatus="count"> 

    <!-- This would work --> 
    <%=request.getParameter("item_" + count.index)%> 

    <!-- I'd like to make this work --> 
    ${param.?????} 

</c:forEach> 

Répondre

17
<c:set var="index" value="item_${count.index}" /> 
${param[index]} 

Malheureusement, + ne fonctionne pas pour les chaînes comme en Java ordinaire, si

${param["index_" + count.index]} 

ne fonctionne pas ;-(

+1

i Correction de la référence à params. c'est supposé être param. Mais votre réponse m'a donné ce dont j'avais besoin pour le faire fonctionner. Merci! – ScArcher2

+0

Vous pouvez faire quelque chose comme ceci: $ {param ["index _". Concat (count.index)]} – jpaoletti

4

Il y a une liste d'objets implicites dans la section Expression Language documentation de la documentation J2EE 1.4 Vous recherchez param

+0

Merci J'ai regardé et j'ai réalisé que j'accédais à la mauvaise chose. La principale chose qui me manquait était la syntaxe de parenthèse pour accéder à une propriété. – ScArcher2

3

Vous avez juste besoin d'utiliser la notation "crochets". Avec l'utilisation d'un JSTL < c: définir un tag > vous pouvez générer le nom du paramètre correct:

<c:forEach var="item" items="${list}" varStatus="count"> 
    <c:set var="paramName">item_${count.index}</c:set> 
    ${param[paramName]} 
</c:forEach> 
-1

Réponse courte:

${param.item_[count.index]} 
Questions connexes