我正在使用SPRING MVC开发一个项目来显示JSP文件中的用户列表。我的Controller文件有:
Map<String, Object> model = new HashMap<String, Object>();
model.put("user", userService.getUser()); //userService.getUser() returns a List
JSP文件包含:
<c:if test="${!empty user}">
<table>
<tr>
<td>User Id</td>
<td>First Name</td>
<td>Last Name</td>
<td>Gender</td>
<td>City</td>
</tr>
<c:forEach items="${user}" var="user">
<tr>
<td><c:out value="${user.id}"/></td>
<td><c:out value="${user.firstName}"/></td>
<td><c:out value="${user.lastName}"/></td>
<td><c:out value="${user.gender}"/></td>
<td><c:out value="${user.city}"/></td>
</tr>
</c:forEach>
</table>
</c:if>
当显示上述JSP文件时,java.lang.NumberFormatException:对于输入字符串:显示“id”。有人可以帮忙找出解决方案吗?
非常感谢。
答案 0 :(得分:1)
NumberFormatException
。检查作为数字的任何输入数据是否实际上正在接收不同的内容(例如:空字符串,无法转换为数字,可能是原因)。
答案 1 :(得分:0)
第一个好的规则:包含你可以命名复数的列表的变量,例如,用户列表名称为“users”:
<c:forEach items="${users}" var="user">
现在你知道变量包含什么,“users”有用户列表,但“user”是用户列表中的一项。
第二条规则:如果要检查,变量是否为数字,不捕获异常,则速度很慢。正则表达式更好更快:
if (anyString.matches("\\d+")){
isANumber();
}
else{
notNumber();
}
答案 2 :(得分:0)
除了holdrarocha和Damien的答案之外,我认为你的问题是你在将ID添加到User对象之前没有检查ID。
确保User中的id变量是整数(或long或其他)。这样,如果从数据库中填充它,您的行映射器将添加数值。
如果它是一个字符串,请确保进入的是数字。
检查String是否为数字的简单方法是用户Apache Commons StringUtils isNumeric方法:
答案 3 :(得分:0)
我不确定你的问题是什么,但我记得把下面的代码放在jsp页面的开头
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>