异常出现情景:Controller向数据库取值,封装在List集合中,Jsp页面通过<c:forEach>取值,访问页面报异常信息如下:
错误信息分析:
根据百度结果得出结论:
该异常属于数字格式化异常,后面有 For input string: "stunum " 提示,这就告诉我们 你当前想把 "stunum " 转换成数字类型时出错了。
不好解决的点是:后端并未进行过数据类型转换,而stunum 代表的是 ${students.stunum},意思是 将后台查到的数据库字段信息,显示在页面上。
注:数据库字段为varchar; stunum在Bean中数据类型为string
@RequestMapping("getStudents")
public String getStudents(Model model){
System.out.println("进入getStudents+1");
List<Student>slist = userDao.selectStudent();
model.addAttribute("students", slist);
return "jsp/studentList";
}
<c:forEach var="zhishi" items="${students.slist}">
//改为items="${students}" 成功获取数据
<tbody>
<tr>
<td>${zhishi.stunum}</td>
</tr>
</tbody>
</c:forEach>
//总结:根本没有转换数据类型的步骤
解决思路:
1.先暂停取数据库数据,改为取死数据,前台尝试取值
String slist="nihaoya";
model.addAttribute("students", slist);
${students} //成功
//结论:数据之间的访问没有问题
2.尝试更换取值字段 失败
3.寻找jstl语法的GUIZE,并进行代码更改。成功。
总结:本次异常出现原因,在于 jstl 语法使用错误导致。
End.**在沉网中生活,不敢失去想飞的心,始终铭记飞翔的姿势
网友评论