在使用idea开发maven+springmvc项目时遇到不加载el表达式的问题,怎么处理呢?下面小编给大家带来了实现代码,一起看看吧
加载如下jsp代码:
<%@ page contenttype="text/html;charset=utf-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>title</title> </head> <body> <c:foreach items="${userlist }" var="lists"> <h3>${lists.username }</h3> <h3>${lists.password }</h3> </c:foreach> </body> </html>
显示结果为:
${lists.username } ${lists.password }
按平常来说引入jstl包理应执行el表达式,但却没有...
解决方法:
在jsp开头添加
<%@page iselignored="false"%>
iselignored是指是否忽略el表达式
iselignored 属性jsp 2.0 新引入的属性,在只支持 jsp 1.2 及早期版本的服务器中,使用这项属性是不合法的。这个属性的默认值依赖于 web 应用所使用的 web.xml 的版本。如果 web.xml 指定 servlet 2.3(对应jsp 1.2)或更早版本,默认值为 true(但变更默认值依旧是合法的,jsp 2.0 兼容的服务器中都允许使用这项属性,不管 web.xml 的版本如何)
查看servlet版本
打开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" >
按住ctrl点击链接,到78行左右就可以看到一段注释
<!-- this is the xml dtd for the servlet 2.3 deployment descriptor. all servlet 2.3 deployment descriptors must include a doctype of the following form: <!doctype web-app public "-//sun microsystems, inc.//dtd web application 2.3//en" "http://java.sun.com/dtd/web-app_2_3.dtd"> -->
翻译一下就是
“这是servlet 2.3部署描述符的xml dtd。所有的servlet 2.3部署描述符必须包含于下面的doctype”
很明显这就是servlet 2.3版本
所以
iselignored的属性默认为true...
如果还有问题?
建议在maven dependencies添加引用包(个人感觉这个不是问题,加不加一样...)
<dependency> <groupid>jstl</groupid> <artifactid>jstl</artifactid> <version>1.2</version> </dependency>
总结
以上所述是小编给大家介绍的使用idea编写jsp时el表达式不起作用的完美解决方法,希望对大家有所帮助
发表评论