我有一个JSP页面,当List<Employee>
从下方的方法显示时,该页面工作正常<c:forEach>
。
@RequestMapping(value = { "getAllEmployees", "/" })
public ModelAndView getAllEmployees() {
// logger.info("Getting the all Employees.");
List<Employee> employeeList = employeeService.getAllEmployees();
return new ModelAndView("employeeList", "employeeList", employeeList);
}
List<Employee>
从下面的方法显示时,同一JSP会引发异常。
@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)
这是怎么引起的,我该如何解决?
你的getAllEmployees(searchName)
方法不会返回List<Employee>
,而是返回List<Object[]>
。很可能还会有编译器生成的“未经检查的强制转换”警告,你忽略或取消了该警告。
证据是参与javax.el.ArrayELResolver
堆栈跟踪。仅在EL表达式的基数为数组类型时才涉及此内容。如果确实有一个Employee而不是Object[]
,那么你将期望javax.el.BeanELResolver
在${employee.id}
要评估EL表达式的特定堆栈跟踪行中。与${employee}
你实际的情况一样,EL会将id属性解释为数组索引,然后尝试将其解析为Integer,但是这样做失败,如你在堆栈跟踪的顶部看到的那样。
要解决此问题,你有两种选择:
修复getAllEmployees(searchName)
返回实数 的方法List<Employee>
。通常,这是通过Employee直接查询实体而不是单个列/字段来完成的。
更换所有不正确的List<Employee>
通过声明List<Object[]>
和在EL处理它作为一个对象数组像这样${employee[0]}
,${employee[1]}
等
问题内容: 我正在尝试获得系统的运行平衡。为此,我从AMOUNT列获取jtable中所有数字的总和,然后将总和减去txtLoanAmount内部的值。这是我的代码段: 现在我收到错误消息: 我该如何解决呢?任何帮助将不胜感激。谢谢 问题答案: 由于Float.parseFloat()和Float.valueOf()始终将数字假定为您的本地格式,因此,这是一个简短的示例,如果您的语言环境与您获取的数
我正在研究背包问题,我是Java新手。我可以像这样手动添加数字: 但是,我无法允许用户输入数字 第一个数字应该是目标,然后是权重<因此,我尝试将用户输入作为字符串,并用空格将其拆分,然后将其转换为整数<接下来,我尝试用两种方法进行parseInt,但都没有成功 以下是代码: 以下是错误: 异常线程"main"java.lang.NumberFormatException:对于输入字符串:"18 7
我正在研究背包问题,我是Java新手。我可以像这样手动添加数字: 谢谢你的帮助。
问题内容: 当我尝试将Integer.parseInt()与单个字符一起使用时,出现此错误。 是什么给我的错误是这样的: 问题答案: 字母不是数字。您是要写数字5吗? 还是您要打印字符的ASCII或Unicode值?