一个偶然的机会遇到了这样一个问题:页面通过EL表达式获取java后台设置的值,结果原样显示el表达式。
后端设置属性值代码如下:
@RequestMapping(value{"/","/welcome**"},method=RequestMethod.GET)
public ModelAndView welcome(){
ModelAndView page = new ModelAndView();
page.addObject("title", "welcome");
page.addObject("message", "hello,this is a welcome page.");
page.setViewName("hello");
return page;
}
jsp页面获取值:
<body>
<h2>title:${title }</h2>
<h2>message:${message }</h2>
</body>
运行服务器,访问页面出现如下结果:
title:${title }
message:${message }
最后的解决办法有两个,个人倾向于第二个:
- 页面上增加<%@ page isELIgnored=”false” %>代码手动开启el。
使用最新的Servlet3.1规范,不要使用默认的2.3dtd,修改web.xml文件。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>securityannotation</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>