アイテムのリストをループしているのですが、アイテムのインデックスに基づいてリクエストパラメータを取得したいと思います。以下のようにスクリプトレットで簡単にできますが、表現言語を使いたいです。
<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>
<c:set var="index" value="item_${count.index}" />
${param[index]}
残念ながら、+はプレーンJavaのように文字列に対しては機能しないため、
${param["index_" + count.index]}
動作しません;-(
J2EE 1.4ドキュメントの Expression Languageドキュメント セクションに暗黙オブジェクトのリストがあります。あなたはparamを探しています。
「角括弧」表記を使用する必要があります。 JSTL <c:set>タグを使用すると、正しいパラメーター名を生成できます。
<c:forEach var="item" items="${list}" varStatus="count">
<c:set var="paramName">item_${count.index}</c:set>
${param[paramName]}
</c:forEach>