您的位置:首页 > 编程语言 > Java开发

springmvc 不解析EL表达式的解决办法

2015-11-24 17:04 393 查看
这是一个spring mvc初学者可能会遇到的问题。代码如下:

@Controller
@RequestMapping(value="/home")
public class HomeController {
@RequestMapping(value = "/index")
public ModelAndView Index(Model model)
{
model.addAttribute("msg", "hello,springmvc");
return new ModelAndView("index");
}
}


<html>
<head>
<meta http-equiv="Content-Type" content="text/html;">
<title>Insert title here</title>
</head>
<body>
${msg}
</body>
</html>


运行结果不是我们希望的
hello,springmvc
,而是
${msg}


导致这个结果的原因是JSP的版本问题,有可能你的项目目前的默认版本是1.2,这个版本默认是不开启EL表达式的。

解决办法有两个,最直接的办法是,在JSP页面的上方加入一个标签,开启EL表达式

<%@ page isELIgnored="false" %>


当然,如果每个页面都要加这么一行的话也很不爽,你可以将你的web.xml中的web-app节点加上下面的属性

<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_3_1.xsd" version="3.1">
......
</web-app>


就会使用JSP2.0,而JSP2.0默认是开启EL表达式的。

我在写这篇博客是也很纠结,解决问了以后,本来想重现一下错误,把代码改回来,改回来后却发现EL表达式也可以解析了。不得已,为了搞明白到底是为什么,我又新建了一个项目,把主要的代码拷贝过来,问题又重现了。我改完web.xml文件,并没有马上生效,而是等了几秒种后我又刷新页面才生效的。我又把web.xml中的代码撤销,重新部署,EL表达式也神奇般地解析了。谁能告诉我是为什么?

不过,至少这个方法能够解析EL表达式了,问题解决了,就写篇博客分享一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息