在JSP中获取数组长度时的java.lang.NumberFormatException

时间:2015-06-28 16:13:38

标签: java jsp servlets jsp-tags

我正在尝试访问String [] []数组的长度属性,但获取NumberFormatException

我的JSP代码

    <c:set var="len" value="${Constants.CATEGORIES.length}"/>
    <c:forEach var="i" begin="1" end="${len}" step="1" varStatus ="status">
        <a class="list-group-item" href="">${Constants.CATEGORIES[i][0]}</a>
    </c:forEach>

下面是stacktrace

java.lang.NumberFormatException: For input string: "length"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:580)
java.lang.Integer.parseInt(Integer.java:615)
javax.el.ArrayELResolver.coerce(ArrayELResolver.java:151)
javax.el.ArrayELResolver.getValue(ArrayELResolver.java:64)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)
org.apache.el.parser.AstValue.getValue(AstValue.java:169)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:115)
org.apache.jsp.WEB_002dINF.view.shared.categories_jsp._jspx_meth_c_005fset_005f0(categories_jsp.java:146)
org.apache.jsp.WEB_002dINF.view.shared.categories_jsp._jspService(categories_jsp.java:107)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:934)
org.apache.jsp.WEB_002dINF.view.home.index_jsp._jspService(index_jsp.java:133)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.raghavpro.bookhive.controllers.home.IndexServlet.doGet(IndexServlet.java:76)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

有任何线索吗?

2 个答案:

答案 0 :(得分:3)

我使用JSTL函数length解决了同样的问题。 在JSP的开头添加taglib:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

然后,在您的JSP中,您可以执行${ fn:length(Constants.CATEGORIES) }

答案 1 :(得分:0)

端=&#34; $ {长度}&#34;似乎不包含该值,而是传递字符串&#34; length&#34;因此例外

java.lang.NumberFormatException: For input string: "length"

检查表达式end =&#34; $ {length}&#34;