JAVA WEB开发中一般前端会是JSP文件,从后端通过ViewResolver渲染到jsp页面,这时候很多时候会需要需要EL表达式。最近发现下面一段代码:
后端:
@RequestMapping("/login")
public String login(HttpServletResponse response,HttpSession session){
Demo demo = new Demo();
demo.setAge(1);
demo.setName("test");
session.setAttribute("loginInfo", demo);//jsp中借用el表达式的sessionScope获取想要的值
return "redirect:/index.jsp";
}
jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<c:choose>
<c:when test="${not empty sessionScope.loginInfo}">
欢迎你:${sessionScope.loginInfo.name }
<br/>
<h2>Hello World!</h2>
</c:when>
<c:otherwise>
<h2>Hello World!</h2>
</c:otherwise>
</c:choose>
</body>
</html>
就这么简单的代码,以前发现都没啥问题,如今发现,不知道怎么的就有问题了。
这段代码运行起来,前后端交互正常,唯一问题就是,前端中需要的参数值直接没有了,导致EL中需要执行的逻辑没法正常。
检查及查询相关材料后,得到解决方法:
把 isELIgnored="false" 这个加入到 <%@ page %>中就可以了。
不过印象中之前是不需要每个页面都写这个的,不然每个页面都得加也是挺麻烦的,只是不知道这种的要怎么处理