【问题标题】:How to print out the indexes of an array object in JSTL如何在 JSTL 中打印出数组对象的索引
【发布时间】:2012-10-19 23:10:09
【问题描述】:

我在 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, ... 但我有一个异常。

【问题讨论】:

  • 你遇到了什么异常?
  • org.apache.jasper.JasPerException 在第 17 行 14:15:16:17:18:19:20:
  • @Jevison7x 不是最有用的信息;这是什么意思?
  • 我不知道。我应该粘贴完整的 Stacktrace 吗?

标签: java html arrays jstl


【解决方案1】:

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

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

${status.index}会给你:

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

更多信息here.

【讨论】:

  • 这似乎是个好主意,让我试试看...谢谢您的帮助。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2012-09-11
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    相关资源
    最近更新 更多