使用IDEA编写jsp时EL表达式不起作用

在使用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>

End......
感谢查看 ≧◇≦
欢迎大家一起交流学习~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Idea是一款非常流行的Java集成开发环境(IDE),它支持开发和调试Java程序。在Idea使用JSPJava服务器页面)开发Web应用程序,是支持使用EL表达式的。 EL(Expression Language)表达式是一种在JSP使用的简单表达式语言,用于动态获取和设置Web应用程序中的数据。EL表达式可以在JSP页面中访问和操作JavaBean、请求参数、Session和Application范围的属性等。 在Idea使用EL表达式非常简单。首先,确保在JSP页面的顶部引入了EL库: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 然后,您可以在JSP页面的任何位置使用EL表达式进行数据处理。例如,要显示一个JavaBean中的属性值,可以使用以下语法: ${bean.property} 其中,bean是JavaBean对象的名称,property是该对象的属性。通过这种方式,EL表达式可以方便地访问和显示对象的属性值。 此外,EL表达式还支持许多内置函数和运算符,可以对数据进行处理和计算。例如,你可以使用${fn:length(beanList)}来获取一个列表的长度。 总而言之,Idea支持使用EL表达式,可以简化JSP页面中数据的访问和操作。通过EL表达式,开发者可以更加方便地处理和展示数据,提高开发效率。 ### 回答2: JSPJavaServer Pages)是一种用于创建动态网页Java技术,而EL(Expression Language)是JSP的一种表达式语言,用于简化在JSP页面中使用和操作数据的过程。在一般情况下,JSP是可以使用EL表达式的。 如果在使用JSP无法使用EL表达式,可能是由于以下原因导致的: 1. JSP配置问题:在JSP页面中使用EL表达式之前,需要确保正确地配置了JSP标准标签库(JSTL)和EL库。这通常需要在JSP页面的顶部引入相关的标签库声明。 2. jsp文件类型错误:请确认文件后缀名为.jsp。 3. jsp版本问题:如果使用的是较老版本的JSP规范(如JSP 1.2),可能不支持EL表达式。此可以尝试升级到较新的JSP规范版本,并确保容器(如Tomcat)也支持。 4. 语法错误:EL表达式的语法正确性非常重要。请确保在使用EL表达式,语法和用法都正确无误。 如果尝试了上述解决方法仍然无法使用EL表达式,可能需要仔细检查JSP配置和代码逻辑,或者查看相关的错误日志信息来进一步排查问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值