前端jsp页面始终接收不到从Controller返回的Model
Controller层代码
@RequestMapping(value = "/findAll",method = RequestMethod.GET)
public String findAll(Model model){
//通过Model储存数据
/*System.out.println("Controller执行了findAll方法。。");*/
List<User> list = userService.findAll();
//addAttribute方法传入一组键值对
model.addAttribute("list",list);
return "list";
list.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>查询了所有用户的信息</h3>
<c:forEach items="${list}" var="user">
${user.id}-${user.username}-${user.password}-${user.age}
</c:forEach>
</body>
</html>
服务器正常运行
但就是接收不到返回的list集合数据
排错思路:
1、根据ssm工作原理检查了一遍调用顺序,编写测试类,发现都能正常调用 (无误)
2、打开浏览器F12检查模式,找到NetWork发现根本没有从后端传来的list集合
3、面向百度找bug (找了一个下午)
发现这哥们碰到一样的问题:公开处刑
最后发现bug实在太坑了,原来idea创建好web项目,默认的web.xml头部配置版本过低
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
这就导致后面的servlet、jsp、EL等采用的全是2.3版本,在2.3版本中,jsp页面是不支持EL的,无法得到正确的解析。
**问题解决:**更换为4.0版本
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web- app_4_0.xsd" version="4.0">
总结:养成良好的idea开发习惯,在下次开发web项目时首先更换web.xml版本,以免出错。