Exception java.lang.NumberFormatException when trying a ".size" inside an EL

1

I'm having an Exception in the following code inside a jsp:

<c:if test="${usuarios.size gt 10}">
  • users is a ArrayList that objects.
  • users is not empty because in the same jsp, above, I run it correctly without problems.
  • I have the jstl libraries and they are referenced and higher in the same jsp I can use them without problems

The error that gives me the log of JBoss is as follows:

15:51:23,738 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/EvaluacionesProveedores].[jsp]] El Servlet.service() para servlet jsp lanzó una excepción: java.lang.NumberFormatException: For input string: "size"
    at java.lang.NumberFormatException.forInputString(Unknown Source) [:1.6.0_32]
    at java.lang.Integer.parseInt(Unknown Source) [:1.6.0_32]
    at java.lang.Integer.parseInt(Unknown Source) [:1.6.0_32]
    at javax.el.ListELResolver.toInteger(ListELResolver.java:407) [:1.0.0.Final]
    at javax.el.ListELResolver.getValue(ListELResolver.java:199) [:1.0.0.Final]
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) [:1.0.0.Final]
    at org.apache.el.parser.AstValue.getValue(AstValue.java:134) [:6.0.0.Final]
    at org.apache.el.parser.AstGreaterThan.getValue(AstGreaterThan.java:37) [:6.0.0.Final]
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187) [:6.0.0.Final]
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:935) [:6.0.0.Final]
    at org.apache.jsp.web.wwusuarios_jsp._jspx_meth_c_005fif_005f1(wwusuarios_jsp.java:389)
    at org.apache.jsp.web.wwusuarios_jsp._jspService(wwusuarios_jsp.java:189)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [:6.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) [:6.0.0.Final]
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) [:6.0.0.Final]
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) [:6.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:734) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:541) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:479) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:407) [:6.0.0.Final]
    at com.saceem.servlets.SMantenimientoUsuario.processRequest(SMantenimientoUsuario.java:337) [:]
    at com.saceem.servlets.SMantenimientoUsuario.doGet(SMantenimientoUsuario.java:344) [:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [:1.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    at com.saceem.filtros.ValidarSession.doFilter(ValidarSession.java:47) [:]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.0.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.Final]
    at java.lang.Thread.run(Unknown Source) [:1.6.0_32]

15:51:23,744 GRAVE [com.saceem.servlets.SMantenimientoUsuario] null: org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /web/wwusuarios.jsp en línea 141

138:                    </tr>
139:                </c:forEach>
140:            </table>
141:            <c:if test="${usuarios.size gt 10}">
142:                <div class="text-center">
143:                    <c:if test="${offsetusuarios == '0'}">
144:                        <span class="glyphicon glyphicon-backward" style="opacity: 0.7;">


Stacktrace:
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498) [:6.0.0.Final]
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411) [:6.0.0.Final]
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) [:6.0.0.Final]
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) [:6.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:734) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:541) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:479) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:407) [:6.0.0.Final]
    at com.saceem.servlets.SMantenimientoUsuario.processRequest(SMantenimientoUsuario.java:337) [:]
    at com.saceem.servlets.SMantenimientoUsuario.doGet(SMantenimientoUsuario.java:344) [:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [:1.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    at com.saceem.filtros.ValidarSession.doFilter(ValidarSession.java:47) [:]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.0.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.Final]
    at java.lang.Thread.run(Unknown Source) [:1.6.0_32]
Caused by: java.lang.NumberFormatException: For input string: "size"
    at java.lang.NumberFormatException.forInputString(Unknown Source) [:1.6.0_32]
    at java.lang.Integer.parseInt(Unknown Source) [:1.6.0_32]
    at java.lang.Integer.parseInt(Unknown Source) [:1.6.0_32]
    at javax.el.ListELResolver.toInteger(ListELResolver.java:407) [:1.0.0.Final]
    at javax.el.ListELResolver.getValue(ListELResolver.java:199) [:1.0.0.Final]
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) [:1.0.0.Final]
    at org.apache.el.parser.AstValue.getValue(AstValue.java:134) [:6.0.0.Final]
    at org.apache.el.parser.AstGreaterThan.getValue(AstGreaterThan.java:37) [:6.0.0.Final]
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187) [:6.0.0.Final]
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:935) [:6.0.0.Final]
    at org.apache.jsp.web.wwusuarios_jsp._jspx_meth_c_005fif_005f1(wwusuarios_jsp.java:389)
    at org.apache.jsp.web.wwusuarios_jsp._jspService(wwusuarios_jsp.java:189)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [:6.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) [:6.0.0.Final]
    ... 35 more
    
asked by Guillermo 09.11.2016 в 20:33
source

1 answer

3

size is not a property of usuarios .

When you do ${usuarios.size} , the EL interpreter looks for the getter property size , which should be a getSize() of usuarios . Since it is a ArrayList , the getSize() method does not exist, and the EL will not call size() .

Solution: Use the standard function length :

${fn:length(usuarios) gt 10}
    
answered by 09.11.2016 / 21:02
source