2009-01-19 4 views
15

Ich durchlaufe eine Liste von Elementen und möchte einen Anforderungsparameter basierend auf dem Index des Objekts abrufen. Ich könnte es leicht mit einem Scriptlet wie unten getan, aber ich würde gerne Ausdruck Sprache verwenden.Wie kann ich dynamisch auf Anfrageparameter mit JSP EL zugreifen?

<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> 

Antwort

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

Leider + funktioniert nicht für Zeichenfolgen wie in Ebene Java, so

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

funktioniert nicht ;-(

+1

i korrigiert den Verweis auf params. es sollte param sein. Aber deine Antwort gab mir, was ich brauchte, um es zum Laufen zu bringen. Vielen Dank! – ScArcher2

+0

Sie können so etwas tun: $ {param ["index _". Concat (count.index)]} – jpaoletti

4

Es gibt eine Liste von impliziten Objekte Im Abschnitt Expression Language documentation der J2EE 1.4-Dokumentation suchen Sie nach param

+0

Danke, ich habe es nachgeschaut und erkannt, dass ich auf das falsche Ding zugreife. Die Hauptsache, die mir fehlte, war die Klammer-Syntax für den Zugriff auf eine Eigenschaft. – ScArcher2

3

Sie müssen nur die "eckige Klammern" -Notation verwenden. Mit der Verwendung eines JSTL < c: set > Tag, das Sie den Namen korrekt Parameter erzeugen kann:

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

Kurze Antwort:

${param.item_[count.index]}