商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 使用IDEA编写jsp时EL表达式不起作用的问题及解决方法

使用IDEA编写jsp时EL表达式不起作用的问题及解决方法

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

在使用IDEA开发Ma ven+SpringMVC项目时,偶尔会遇到JSP页面中EL表达式不加载的问题。明明代码里写了${lists.username},结果页面直接原样输出,一个符号都没变。这让人有点摸不着头脑,毕竟JSTL包也引入了,按说是应该正常解析的。下面直接说问题所在和解决办法。

先看一段典型的JSP代码:

<%@ page contentType="text/html;charset=UTF-8" language="ja va" %>
<%@ taglib uri="http://ja va.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://ja va.sun.com/jsp/jstl/fmt" %>


  Title


  
    

${lists.username }

${lists.password }

运行后,页面直接显示:

${lists.username }${lists.password }

按照常理,引入JSTL标签库后,EL表达式会被容器解析执行,但这里却没有。问题出在哪里?

核心原因:isELIgnored 属性

其实很简单,在JSP页面开头加上这样一行即可:

<%@page isELIgnored="false"%>

isELIgnored 是JSP 2.0引入的属性,用来控制是否忽略EL表达式。这个属性的默认值取决于Web应用所使用的 web.xml 版本。如果 web.xml 指定的是Servlet 2.3(对应JSP 1.2)或更早版本,默认值为 true,也就是说EL表达式默认不会被解析。而很多旧项目或模板生成的 web.xml 可能正好是2.3版本,这就是问题所在。

查看一下你的 web.xml 文件,通常能看到类似这样的头部:



按住Ctrl点击那个链接,翻到大约78行,会有这样一段注释:

很明显,这就是Servlet 2.3版本,所以 isELIgnored 默认是 true,EL表达式自然不会被解析。

补充说明:Ma ven依赖问题

如果添加了 isELIgnored="false" 后问题依旧,可以检查一下Ma ven依赖中是否包含了JSTL的jar包。在 pom.xml 中加入以下依赖:


  jstl
  jstl
  1.2

不过说实话,这个依赖通常不是导致EL表达式失效的直接原因——只要容器支持JSP 2.0以上,JSTL包更多是用于标签库的解析,而EL表达式本身是容器内置功能。但为了保险,加上也无妨。

总结

一句话:遇到EL表达式不解析,先检查 web.xml 的版本,如果是2.3,直接在JSP页面加上 <%@page isELIgnored="false"%> 即可。这是最直接也最有效的解决方式。

本文转载于:https://www.jb51.net/article/145406.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注