`

问题解决方案-解决JSP页面中的EL表达式不被解析的问题

阅读更多

解决JSP页面中的EL表达式不被解析的问题


今天遇到EL表达式不被解析的问题,现象如下:

在**.jsp中设定了<c:set scope="request" var="sysCtxp" value="${pageContext.request.contextPath}" />,但是使用${sysCtxp}却无法取得值,输出后是"${sysCtxp}"字符串,EL表达式没有被解析。


反复尝试过一些方案后,将此类问题的解决方案归纳如下:


1、升级Tomcat容器至Tomcat6或以上;但请注意,该方法不能保证一定可以解决该问题,尝试过发现,即使6.x的不同版本也存在同样的问题,似乎与Tomcat6下lib目录中的jsp-api.jar/servlet-api.jar有关系,但是使用7.x版本,目前还没有出现该问题。


2、修改web.xml中<web-app>的属性。

一般修改该属性时,可以使用eclipse创建动态web工程方式,在创建时选定servlet2.4以上的版本,创建后会自动生成web.xml文件,然后从中摘出即可,最好不手写,以免出错。

 

以下是把web.xml中<web-app>版本修改到2.4或以上的样例代码:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 

注意:如果web.xml中声明部分的schema版本为2.4或者以上,而tomcat使用的是5.5.x以下的版本的时候就会出现在页面直接显示而不解析jstl/el表达式。如果web.xml中声明部分的schema版本为2.5或者以上,tomcat使用使用的是6.0以上则不出现这种问题。


3、在使用了EL表达式的所有JSP页面中,加入<%@ page isELIgnored="false" %>,可以把该语句放置到共通jsp页面上,然后在其他页面上include即可。


下面是官方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 

 

1
1
分享到:
评论

相关推荐

    jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法.docx

    通过上述解决方案,可以有效避免JSP页面中的EL表达式被当作字符串处理的问题。在实践中,开发者应根据项目需求和技术背景,合理配置`isELIgnored`属性,同时注意性能优化和代码可维护性,以确保应用的高效稳定运行。

    el表达式不起作用解决方案

    然而,有时开发者可能会遇到EL表达式不工作的问题,这可能给开发过程带来困扰。本篇文章将详细探讨这个问题,并提供几种有效的解决方案。 1. **检查JSP页面的DOCTYPE** EL表达式在JSP 2.0及更高版本中默认启用。...

    maven项目中的EL表达式问题

    在进行Java Web项目的开发时,特别是在使用Maven的情况下,了解不同Web规范下的EL表达式解析规则至关重要。通过本文的分析与解决方案,我们可以更好地理解如何解决EL表达式未被解析的问题,避免类似错误的发生。同时...

    JS中如何引用EL表达式

    一种解决方案是将 JavaScript 文件改为 JSP 文件,然后在 JSP 文件中引入 EL 表达式。这样,在服务端执行 EL 表达式后,结果将被传递给客户端的 JavaScript。 例如,我们可以在 JSP 文件中编写以下代码: ```jsp ; ...

    JSTL自定义EL表达式

    本资源主要讲解了如何在JSTL中定义和使用自定义的EL表达式,这对于提高JSP页面的可读性和可维护性至关重要。 首先,理解JSTL的基础概念。JSTL由几个核心标签库组成,如fmt、fn、sql、xml等,它们提供了处理日期和...

    jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法

    `isELIgnored="true"`意味着JSP引擎会忽略EL表达式,将其视为普通字符串处理,而`isELIgnored="false"`则启用EL表达式解析。 在JavaEE4中,默认情况下`isELIgnored`是设为`false`的,这意味着EL表达式会被解析。但...

    JSP 不能解析EL表达式的解决办法

    总结来说,当JSP页面中EL表达式不被解析时,首先应检查页面的isELIgnored属性是否设置为"true",如果是,将其改为"false"。其次,确认web.xml文件的配置,确保web应用遵循Servlet 2.4/JSP 2.0规范。如果这两种方法都...

    JSP页面无法识别EL表达式问题解决方案

    这通常是因为JSP的配置不正确,导致EL表达式被当作普通文本处理。 首先,解决这个问题的一个方法是在JSP页面头部设置 `isELIgnored` 属性为 `false`。这是一个关键的开关,当设置为 `false` 时,JSP引擎会解析并...

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

    默认情况下,如果Web应用的`web.xml`配置文件遵循Servlet 2.3(对应JSP 1.2)或更早版本,`isELIgnored`可能会被设置为`true`,导致EL表达式不被执行。在IDEA中,如果你的项目配置或依赖管理出现了问题,也可能出现...

    EL表达式无效问题《ZT》

    本文将深入探讨EL表达式的基本概念、可能出现的问题及其解决方案,并结合提供的`jstl.jar`和`standard.jar`这两个关键库文件,来进一步理解它们在处理EL表达式中的作用。 EL表达式是JavaServer Pages(JSP)2.0引入...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    在JavaWeb开发中,尤其是涉及到JSP页面时,乱码问题常常困扰着开发者。这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何...

    JSTL--EL使用手册.pdf

    EL语言在JSTL1.0规范中被引入,并在JSTL1.1规范中得到进一步发展,使得JSP2.0容器能够独立理解EL表达式。 EL表达式语言借鉴了JavaScript的多类型转换无关性的特点,支持在不进行显式类型转换的情况下从各种不同的上...

    解决jsp开发中不支持EL问题

    上述配置将使所有JSP页面的EL表达式都被解析。 另一种解决方案是直接更新`web.xml`中的DTD或XSD引用,使其指向Servlet 2.4版本,这样`isELIgnored`将默认为`false`,无需额外配置。以下是Servlet 2.4的`web.xml`...

    解决JSP开发中的各种乱码问题

    5. **EL表达式和JSTL标签**:在EL表达式中处理中文字符时,若未正确设置JSP页面的编码,也可能出现乱码。同样,使用JSTL标签如`&lt;c:out&gt;`时,要确保其内部处理编码的方式与JSP页面一致。 三、IDE与源代码文件编码 1....

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

    然而,当出现`javax.el.ELException: Failed to parse the expression`错误时,这通常意味着EL表达式没有被正确解析,导致程序无法正常运行。该错误通常是由于违反了EL表达式的语法规则,或者尝试执行了不合法的操作...

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

    首先,EL表达式的工作原理是基于JSP规范中的Java Expression Language,它能够解析并执行Java表达式,将结果输出到页面上。当你在JSP页面中使用`${}`时,如果你的数据没有正确显示,可能是以下几个原因: 1. **JSTL...

    Java表达式攻防下的黑魔法-release

    - 在JSP页面中,EL表达式提供了强大的动态执行能力。例如,下面的代码片段展示了如何利用EL表达式执行系统命令: ```java ${''.getClass().forName("javax.script.ScriptEngineManager").newInstance() ....

    学习jsp碰到各种问题收集的处理办法

    在深入探讨JSP(JavaServer Pages)学习过程中可能遇到的问题及其解决方案之前,首先需要了解JSP的基本概念。JSP是一种动态网页技术,它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,以实现服务器端的数据...

    javax.el.rar

    在这种情况下,解决方案是将`javax.el`的实现添加到项目依赖中。这里提供的压缩包包含两个文件:`el-ri.jar`和`el-api.jar`。 1. `el-api.jar`:这个文件包含了EL API的定义,定义了如`ValueExpression`, `...

    get方式传参中文乱码问题的解决方案

    - 如果使用了JSP页面,并且希望直接通过EL表达式获取参数值,需要确保参数已经被正确编码。 - 示例代码:`&lt;a href="test.jsp?name=("","utf-8")%&gt;"&gt;&lt;/a&gt;`,然后在JSP页面直接使用`${param.name}`获取参数值。 ...

Global site tag (gtag.js) - Google Analytics