今天写jsp页面获取后台请求域中列表的值时获取不到,百度大多数是说el表达式没开启的缘故,在jsp上面加<%@ page isELIgnored="false" %>
就行,但是我的是不显示值,并不是表达式的问题。后来发现是后台页面跳转的问题。
下面是后台代码
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<User> userList = new ArrayList<User>();
User user1 = new User(1,"admin","正常");
User user2 = new User(2,"zhangsan","正常");
User user3 = new User(3,"lisi","不可用");
userList.add(user1);
userList.add(user2);
userList.add(user3);
req.setAttribute("list",userList);
resp.sendRedirect("javaweb_02_maven_war_exploded/userList.jsp\n");
}
<%@ page import="java.util.List" %>
<%@ page import="com.zh.bean.User" %>
<%@ page isELIgnored="false" %>
<%@ 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>
<%
List<User> userList = (List<User>) pageContext.getAttribute("list");
%>
<%=
userList
%>
<table>
<tr>
<th>用户ID</th>
<th>用户名</th>
<th>状态</th>
<th>操作</th>
</tr>
<c:forEach var="user" items="${requestScope.list}">
<tr>
<th>${user.id}</th>
<th>${user.name}</th>
<th>${user.status}</th>
<th><button>修改</button>|<button>删除</button></th>
</tr>
</c:forEach>
</table>
</body>
</html>
可以看到这里用了重定向,重定向会重新发送请求,这就导致之前放在请求域中的数据就丢失了,所以页面什么也不显示。
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<User> userList = new ArrayList<User>();
User user1 = new User(1,"admin","正常");
User user2 = new User(2,"zhangsan","正常");
User user3 = new User(3,"lisi","不可用");
userList.add(user1);
userList.add(user2);
userList.add(user3);
req.setAttribute("list",userList);
req.getRequestDispatcher("/userList.jsp").forward(req,resp);
}
将页面跳转方式设为请求转发,页面就正常显示了。