Spring JSP中列表中的${employee.id}抛出java.lang.NumberFormatException:对于输入字符串:";id";

Spring JSP中列表中的${employee.id}抛出java.lang.NumberFormatException:对于输入字符串:";id";,spring,hibernate,jsp,spring-mvc,el,Spring,Hibernate,Jsp,Spring Mvc,El,我有一个JSP页面,在中从下面的方法显示列表时,该页面运行良好 这是如何导致的,我如何解决它?您的getAllEmployees(searchName)方法不会返回列表,而是返回列表。最有可能的情况是,编译器生成了一个“uncheckedcast”警告,您忽略或抑制了该警告 证据是javax.el.ArrayELResolver参与堆栈跟踪。这仅在EL表达式的基为数组类型时才涉及。如果您确实有一个Employee而不是Object[],那么您希望javax.el.BeanELResolver位于

我有一个JSP页面,在
中从下面的方法显示
列表时,该页面运行良好

这是如何导致的,我如何解决它?

您的
getAllEmployees(searchName)
方法不会返回
列表,而是返回
列表。最有可能的情况是,编译器生成了一个“uncheckedcast”警告,您忽略或抑制了该警告

证据是
javax.el.ArrayELResolver
参与堆栈跟踪。这仅在EL表达式的基为数组类型时才涉及。如果您确实有一个
Employee
而不是
Object[]
,那么您希望
javax.el.BeanELResolver
位于要计算el表达式
${Employee.id}
的特定堆栈跟踪行。由于在您的例子中,
${employee}
实际上是一个数组,因此EL将把
id
属性解释为数组索引,然后尝试将其解析为
整数
,但未能做到这一点,正如您在堆栈跟踪的顶行中看到的那样

要解决此问题,您有两个选项:

  • 修复
    getAllEmployees(searchName)
    方法以返回real
    列表
    。通常,这是通过直接查询
    Employee
    实体来完成的,而不是通过虚拟列/字段

  • List
    替换所有不正确的
    List
    声明,并将其作为对象数组在EL中处理,如
    ${employee[0]}
    ${employee[1]}


  • 添加错误消息将使帮助更容易。@Lukehey添加了错误,请下一步查看。尝试包含所有信息,因为您的映射显然工作正常。
    @RequestMapping(value = { "getAllEmployees", "/" })
    public ModelAndView getAllEmployees() {
        // logger.info("Getting the all Employees.");
        List<Employee> employeeList = employeeService.getAllEmployees();
        return new ModelAndView("employeeList", "employeeList", employeeList);
    }
    
    @RequestMapping("searchEmployee")
    public ModelAndView searchEmployee(@RequestParam("searchName") String searchName) {
        // logger.info("Searching the Employee. Employee Names: " + searchName);
        List<Employee> employeeList = employeeService.getAllEmployees(searchName);
        System.err.println("Employee count = "+employeeList.size());
        return new ModelAndView("employeeList", "employeeList", employeeList);
    }
    
    java.lang.NumberFormatException: For input string: "id"
        java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        java.lang.Integer.parseInt(Integer.java:492)
        java.lang.Integer.parseInt(Integer.java:527)
        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.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:943)
        org.apache.jsp.WEB_002dINF.pages.employeeList_jsp._jspx_meth_c_005fout_005f0(employeeList_jsp.java:358)
        org.apache.jsp.WEB_002dINF.pages.employeeList_jsp._jspx_meth_c_005fforEach_005f0(employeeList_jsp.java:312)
        org.apache.jsp.WEB_002dINF.pages.employeeList_jsp._jspx_meth_c_005fif_005f1(employeeList_jsp.java:273)
        org.apache.jsp.WEB_002dINF.pages.employeeList_jsp._jspService(employeeList_jsp.java:162)
        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)
        org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
        org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
        org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
        org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
        org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
        org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
        org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)