如何在JSTL中打印出数组对象的索引

时间:2012-10-19 23:10:10

标签: java html arrays jstl

我在JSTL中遇到问题,我有一个来自servlet中设置的请求属性的数组对象。我想要做的就是打印数组的索引。有什么帮助吗?这是代码:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="/WEB-INF/tlds/Functions" prefix="func"%>
<table>
    <tr>
        <td>
            <b>k</b> = 
        </td>
        <td>
            <table border="1">
                <c:forEach var="i" begin="0" end="${responseVector.length}">
                <tr>
                    <td>k<sub>${i}</sub></td><!-- I wish to print the indexes here -->
                </tr>
                </c:forEach>
            </table>
        </td>
        <td>
            <table border="1">
                <c:forEach var="i" items="${responseVector}">
                <tr>
                    <td>${func:roundOff(i, 4)}</td>
                </tr>
                </c:forEach>
            </table>
        </td>
    </tr>
</table>
<br/>

在上面的代码中,responseVector是一个双数组对象,但我希望第一个循环中的变量i在每次循环迭代时打印数组对象的索引。我的预期输出是:k0,k1,k2,......但我有一个例外。

2 个答案:

答案 0 :(得分:2)

试试这个:(使用varStatus属性)

<c:forEach items="${responseVector}" var="r" varStatus="status">
  <c:out value="${status.index}"/>
</c:forEach>

${status.index}会给你:

  

检索迭代当前轮次的索引。如果   迭代正在基础数组的子集上执行,   java.lang.Collection或其他类型,返回的索引是绝对的   关于基础集合。指数从0开始。

更多信息here

答案 1 :(得分:0)

我在Paulius Matulionis的建议中得到了一点帮助。这是我使用的正确代码:

<%-- 
    Document   : DisplayResponseVector
    Created on : Sep 14, 2012, 5:33:41 PM
    Author     : Jevison7x
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="/WEB-INF/tlds/Functions" prefix="func"%>
<table>
    <tr>
        <td>
            <b>k</b> = 
        </td>
        <td> 
            <table border="1">
                <c:forEach var="i" items="${responseVector}" varStatus="sub">
                <tr>
                    <td>k<sub>${sub.count - 1}</sub></td>
                </tr>
                </c:forEach>
            </table>
        </td>
        <td>
             = 
        </td>
        <td>
            <table border="1">
                <c:forEach var="i" items="${responseVector}">
                <tr>
                    <td>${func:roundOff(i, 4)}</td>
                </tr>
                </c:forEach>
            </table>
        </td>
    </tr>
</table>
<br/>

上面的代码完美地完成了工作!谢谢大家。