JSTL如何连接值?

时间:2012-04-22 13:50:34

标签: jsp loops jstl concatenation el

我收到了以下代码:

<c:forEach var="i" begin="1" end="${finalDisccount}">
                <p><c:out value="${tracksCD}" /> Tracks für CD${i} hochladen</p>
                <p><input id="filename_${i}" type="file" name="filename_${i}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>

值“tracksCD”必须与变量i连接,因此这样的东西是由循环创建的:

<p><c:out value="${tracksCD1}" /> Tracks für CD${i} hochladen</p>
<p><c:out value="${tracksCD2}" /> Tracks für CD${i} hochladen</p>

等等。 有没有办法将$ {tracksCD}和$ {i}组合起来动态获取$ {tracksCD1}等等?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您知道数据的范围,那么您只需在范围地图${requestScope}${sessionScope}${applicationScope}中访问它。例如。当它在请求范围内时:

<c:forEach var="i" begin="1" end="${finalDisccount}">
    <c:set var="tracksCDKey" value="${tracksCD}${i}" />
    <p><c:out value="${requestScope[tracksCDKey]}" /> Tracks für CD${i} hochladen</p>
    <p><input id="filename_${i}" type="file" name="filename_${i}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>

然而,你有一个非常讨厌的设计错误。而是将它们作为${tracksCDs}收集在数组或列表中,以便您可以执行以下操作:

<c:forEach var="i" begin="1" end="${finalDisccount}">
    <p><c:out value="${tracksCDs[i - 1]}" /> Tracks für CD${i} hochladen</p>
    <p><input id="filename_${i}" type="file" name="filename_${i}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>

或者,如果${finalDisccount}恰好与数组/列表具有相同的大小:

<c:forEach items="${tracksCDs}" var="${tracksCD}" varStatus="loop">
    <p><c:out value="${tracksCD}" /> Tracks für CD${loop.count} hochladen</p>
    <p><input id="filename_${loop.count}" type="file" name="filename_${loop.count}" size="50" multiple="multiple" required="required"/></p>
</c:forEach>