Pra*_*nav 4 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>
Run Code Online (Sandbox Code Playgroud)
下面是堆栈跟踪
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)
Run Code Online (Sandbox Code Playgroud)
有什么线索吗?
我通过使用 JSTL 函数解决了同样的问题length。在 JSP 的开头添加 taglib:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
Run Code Online (Sandbox Code Playgroud)
然后,在您的 JSP 中,您可以执行 ${ fn:length(Constants.CATEGORIES) }