`

JSP页面EL表达式无效的问题

阅读更多
以前用WSAD wizard做的,都可以在JSP页面中解析到EL表达式,当然前提是JSP2.0的情况下。
今天遇到了一个莫名其妙的问题。刚下载Eclipse3.3+MyEclipse6.0体验的过程中,遇上了解析不到EL表达式的问题。经过好几个小时的琢磨终于发现了,给大家share一下:
问题就出在建Web Project的时候web.xml声明上。
web.xml声明部分一般分为如下版本的xsd,
web-app_2_2.xsd
web-app_2_3.xsd
web-app_2_4.xsd
web-app_2_5.xsd

更详细的列出各版本web.xml声明部分吧,如下:
web-app_2_2.xsd
Java代码 
1. <?xml version="1.0" encoding="UTF-8"?>  
2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/dtd/web-app_2_2.dtd"> 

web-app_2_3.xsd
Java代码 
1. <?xml version="1.0" encoding="UTF-8"?>  
2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 

web-app_2_4.xsd
Java代码 
1. <?xml version="1.0" encoding="UTF-8"?>  
2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

web-app_2_5.xsd
Java代码 
1. <?xml version="1.0" encoding="UTF-8"?>  
2. <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 


确定web.xml里的xsd版本之后一定要在JSP的声明(<%@page %>)部分加一行,如下:
<%@ page isELIgnored="false" %>
这样设为false才能解析EL表达式。
经过各版本的test之后....
注意!! 其中servlets 2.4(我没记错的话JSP 2.0出来之后的第一个版本),这个版本的isELIgnored默认设置为false。所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意声明。

下面是官方Documention中isELIgnored Attribute的详解:
The isELIgnored Attribute
• Format
– <%@ page isELIgnored="false" %>
– <%@ page isELIgnored="true" %>
Purpose
– To control whether the JSP 2.0 Expression Language
(EL) is ignored (true) or evaluated normally (false).
• Notes
– If your web.xml specifies servlets 2.3 (corresponding to
JSP 1.2) or earlier, the default is true
• But it is still legal to change the default—you are permitted
to use this attribute in a JSP-2.0-compliant server
regardless of the web.xml version.
– If your web.xml specifies servlets 2.4 (corresponding to
JSP 2.0) or earlier, the default is false



关键字: el表达式不起作用
今天晚上学习SSH,发现一个el表达式在JSP2.0中不起作用的问题。反复调试多次,发现是web.xml中出了问题。猜测是版本的问题,但只知道了如何修改,不知道为什么那样修改。停止工作后看别人博客,很幸运的发现了原因。

tomcat5.0的版本, 使用了低版本,只求稳定。

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
2.4版本默认启用el表达式,如果使用2.5版本,默认el表达式是关闭的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
那么对应2.5的web.xml -->  jsp页面里应该增加<%@ page isELIgnored="false"%>

一句话,凡是部署描述文件遵循Servlet2.4规范的WEB应用,EL表达式的计算默认是启用的,而未遵循的,则EL表达式的计算默认是禁用的。

所以解决方案还可以是:将web.xml中的DTD(文档类型定义)改问2.4的版本
分享到:
评论

相关推荐

    EL表达式无效问题《ZT》

    通过上述分析,我们可以看出,解决EL表达式无效问题需要从多个角度进行排查,包括检查依赖、语法、作用域、类型转换以及服务器配置等。理解并熟练运用这些知识,将有助于我们在开发过程中更有效地诊断和修复此类问题...

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

    解决IDEA中EL表达式失效的问题通常涉及检查JSP页面的元指令、项目配置、依赖项以及应用服务器的设置。通过明确指定`isELIgnored`属性、确认Servlet版本和添加JSTL依赖,大多数情况下可以修复问题。如果问题依然存在...

    用EL判断登入密码和用户名是否为空

    EL表达式主要用于简化页面逻辑,提高代码可读性和维护性。在本场景中,"用EL判断登入密码和用户名是否为空"是一个典型的用户认证过程中的需求,确保在用户尝试登录时,输入的用户名和密码不为空,以防止无效的登录...

    El表达式使用问题javax.el.ELException:Failed to parse the expression的解决方式

    此外,EL表达式还可以与JSTL(JavaServer Pages Standard Tag Library)结合使用,增强JSP页面的功能,例如进行条件判断、循环控制等。 在实际开发中,当遇到`javax.el.ELException`时,首先应检查表达式是否符合EL...

    jsp页面使用${}不起作用的解决方法

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术。在JSP中,`${}`表达式通常被称为EL...同时,学习和理解EL表达式的工作原理以及JSP页面的生命周期,对于诊断和解决这类问题非常有帮助。

    el-api.jar el-ri.jar

    在这个特定的错误信息中,`javax/el/ValueExpression` 指出问题可能出在EL表达式的解析或执行上。这可能是由于尝试使用未定义或无效的`ValueExpression`,或者在访问或操作Java对象时出现了问题。 **el-ri.jar** `...

    基于jsp的动态效果的登录页面

    JSP页面主要由静态内容(HTML、CSS、JavaScript)和动态元素(Java表达式、脚本片段、指令)组成。 二、登录页面结构 一个基本的登录页面通常包含以下组件: 1. 用户名输入框:用户输入其用户名或账户ID。 2. 密码...

    jstl实现jsp页面的分页

    通过结合EL表达式和JSTL标签,我们可以创建动态的、适应性强的分页界面,提高用户体验。在实际开发中,还需要考虑错误处理和优化,例如处理无效的页码请求,以及在数据量变化时自动调整分页参数等。

    ExtJS Jetty启动报错 tag

    这个修复方案解决了EL表达式在Jetty服务器上的解析问题,确保了JSP页面的正常编译和执行。对于开发人员来说,了解服务器和框架对EL语法的特定要求是非常重要的,尤其是当遇到类似问题时,及时调整表达式以符合这些...

    jsp传值中文乱码问题解决方法示例介绍.docx

    如果使用EL表达式(${...})或JSTL(如`${...}" /&gt;`),它们通常会自动处理编码问题,但仍建议在JSP页面头部设置响应编码。 8. 应用程序级设置: 在Servlet容器的配置中,可以设置全局的字符编码,比如在Spring ...

    自己写的jsp简单登录页面 myeclips

    在JSP页面中,你可以定义JavaBeans(自定义组件)、使用EL(表达式语言)进行数据绑定、以及利用JSTL(JavaServer Pages Standard Tag Library)进行控制流操作。在本例中,我们可能有一个简单的JSP文件,用于接收...

    JSP实现微博登陆界面

    对于可能出现的错误,如无效的登录尝试或数据库操作失败,JSP页面应提供适当的错误消息。这可以通过在Java代码中捕获异常,然后将错误信息传递回JSP页面显示。 总的来说,"JSP实现微博登录界面"项目展示了如何利用...

    JSP网页计算器.rar

    EL允许在JSP页面中直接访问JavaBean属性,使得页面更加简洁。在这个项目中,EL可用于直接显示计算结果,无需额外的Java代码。 8. **Ajax技术** 如果想增强用户体验,可以引入Ajax(Asynchronous JavaScript and ...

    jsp学生管理系统源代码

    5. **JSTL和EL表达式**:JSP Standard Tag Library(JSTL)提供了一组标签库,可以简化JSP页面中的业务逻辑,而Expression Language(EL)则提供了简洁的方式来访问和操作Java对象。 6. **会话管理**:为了跟踪用户...

    jsp实用编程实例集锦

    - EL简化了从JSP页面获取和设置JavaBean属性的过程,使得表达式更为简洁,如`${bean.property}`。 4. **JSP生命周期** - **解析阶段**:JSP被转换成Servlet源码。 - **编译阶段**:源码被编译成字节码,然后加载...

    jsp航空售票

    JSP文件由静态内容(HTML、CSS、JavaScript)和动态元素(Java代码片段、脚本let、JSP指令、EL表达式、JSTL标签库)组成。 2. **JSP生命周期**:JSP在被请求时会转化为Servlet,经历初始化、服务、销毁三个阶段。...

    jsp程序开发范例宝典 第十五章

    3. JSP表达式语言(EL):EL是一种简洁的脚本语言,用于获取和设置JavaBeans属性。它简化了从JSP页面访问Java对象的属性,如`${variable}`用于输出变量的值。 4. JavaServer Pages Standard Tag Library (JSTL):...

    一个经典的JSP分页实例

    例如,可以使用EL表达式来获取当前页、总页数、是否有前后页等信息,并生成相应的HTML链接。 6. **服务器端处理**:在服务器端,通常会有一个Servlet或Controller处理用户的分页请求,它负责查询数据库并填充...

    servlet+jsp+mysql简单交友网站系统

    5. **JSTL和EL**:JSP页面可能使用了JSP Standard Tag Library (JSTL)和Expression Language (EL),以更简洁的方式处理标签和表达式。 通过学习和实践这个项目,初学者可以掌握Java Web开发的基础,并逐步提升到更...

    期末考试题关于JSP

    - 使用EL(Expression Language)表达式代替脚本元素,提高代码可读性。 - 有效利用缓存和Session管理,减少不必要的数据库访问。 - 对JSP页面进行静态化,提升性能。 ### 故障排查与硬件维护 在描述中提到的故障...

Global site tag (gtag.js) - Google Analytics