`
夏末忆逝
  • 浏览: 147182 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

web.xml version=2.3时 使用el表达式和c标签的问题

 
阅读更多

背景:

公司搭建的工程web.xml版本为2.3 在jsp中不能使用el表达式

 

解决方案:

①修改web.xml版本为2.4 / 2.5 / 3.0 当修改为2.3以上版本时,可以在页面中直接使用el表达式

(不推荐,不能因为个人项目中出现的问题,而修改公司框架结构) ②在jsp页面中添加el表达式的显示支持 isELIgnored="false"

例 :<%@ page language="java" import="java.util.*" pageEncoding="utf-8"  isELIgnored="false" %>

2.3版本的jsp页面是不支持这个属性提示的,报黄线属于正常

 

这时虽然可以使用el表达式,但与c标签结合使用时,会出现如下异常

According to TLD or attribute directive in tag file, attribute items does not accept any expressions

查阅资料,貌似是c标签在2.3下不能与el一起使用

解决方案:使用c标签的扩展库

    <taglib>
            <taglib-uri>/c-rt</taglib-uri>
             <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib>

上面的代码是在web.xml中配置的,当然你也可以直接在jsp页面中配置

<%@ taglib uri="/WEB-INF/c-rt.tld"  prefix="c"%>  或

<%@ taglib uri=http://java.sun.com/jstl/core_rt prefix="c"%>

这样就可以在c标签中使用el表达式了

 

下面是2.3 2.4 2.5 版本的头信息

 

Servlet 2.3 
<?xml version="1.0" encoding="UTF-8"?>
<!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>
  ...
</web-app>


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

Servlet 2.5 
<?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"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "
        version="2.5">
  ...
</web-app> 

 

 补充:

如果在web.xml中配置tld标签的话 2.3版本与 后面的版本写法是不同的

 

 

2.3  存在taglib这个节点

  <taglib>
            <taglib-uri>/c-rt</taglib-uri>
             <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib> 
 
2.4/2.5/3.0 标签节点包含在 jsp=config中

 <jsp-config>
        <taglib>
            <taglib-uri>/custom-tags</taglib-uri>
            <taglib-location>/WEB-INF/custom-tags.tld</taglib-location>
        </taglib>
          <taglib>
            <taglib-uri>http://onezero.com.cn/view/jsp/blockview</taglib-uri>
            <taglib-location>/WEB-INF/blockview.tld</taglib-location>
          </taglib>       
        <taglib>
            <taglib-uri>/struts-html</taglib-uri>
            <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/struts-bean</taglib-uri>
            <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/struts-logic</taglib-uri>
            <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
            <taglib-location>/WEB-INF/c.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
            <taglib-location>/WEB-INF/fmt.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>http://java.sun.com/jsp/jstl/functions</taglib-uri>
            <taglib-location>/WEB-INF/fn.tld</taglib-location>
        </taglib>
       
        <jsp-property-group> 
            <description>html encode</description> 
            <display-name>JSPConfiguration</display-name> 
            <url-pattern>*.html</url-pattern> 
            <el-ignored>true</el-ignored> 
            <page-encoding>UTF-8</page-encoding> 
            <scripting-invalid>false</scripting-invalid> 
            <include-prelude></include-prelude> 
            <include-coda></include-coda>
        </jsp-property-group>
       
    </jsp-config>
 

 

 


 

 

分享到:
评论
2 楼 rgdson 2015-03-31  
Good! add oil.
1 楼 zgw06629 2014-03-10  
Good! 总结的非常好。

相关推荐

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

    综上所述,在开发中遇到EL表达式问题时,可以通过调整web.xml文件中的JSP版本配置或在JSP页面中调整page directive指令来解决。同时,了解EL表达式在不同Java EE版本中的行为差异以及它们提供的新特性,有助于在实际...

    maven项目中的EL表达式问题

    由于Web 2.5及更高版本的规范默认支持EL表达式的解析,可以通过修改web.xml文件的`&lt;web-app&gt;`标签中的`version`属性值来实现。 ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app xmlns:xsi=...

    使用EL表达式时候用到的jar包

    本主题主要探讨在使用EL表达式时所依赖的jar包及其作用。 1. **JSTL (JavaServer Pages Standard Tag Library)** EL通常与JSTL一起使用,JSTL提供了一系列标准标签库,用于增强JSP页面的功能。JSTL的核心标签库(`...

    tomcat5.5.28支持EL 表达式的解决方法.

    随后,可以在你的JSP页面中测试EL表达式的使用情况,比如通过`&lt;%= %&gt;`或`&lt;c:out value="${bean.property}"/&gt;`等方式访问JavaBean的属性,检查是否能正确显示预期的数据。 总之,要使Tomcat 5.5.28支持EL表达式,...

    jsp 不支持EL表达式,解决办法.docx

    如果你的 `web.xml` 文件配置的是 Servlet 2.3 或更低版本,那么默认情况下,它将不支持 EL 表达式。你需要将 `web.xml` 的版本升级到 Servlet 2.4 或更高,例如设置为: ```xml &lt;web-app version="2.4" xmlns=...

    EL表达式所用的jar包.rar

    其次,`jstl.jar`(JavaServer Pages Standard Tag Library)是JSP标准标签库,它包含了EL表达式支持和其他常用的JSP标签,如条件语句、循环、函数调用等。在EL表达式与JSTL结合使用时,可以极大地增强JSP页面的功能...

    jsp 不支持EL表达式,解决办法

    –CTYPE web-app PUBLIC &lt;/sp&gt; “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”&gt; 在默认情况下,Servlet 2.3 / JSP 1.2是不支持EL表达式的,而Servlet ...

    EL表达式 jsp

    EL表达式通常被用来获取和设置页面、请求、会话和应用程序范围内的对象属性,以及处理JSP页面中的各种数据。 在Tomcat服务器中,EL表达式默认是启用的,但在某些情况下可能需要手动配置。有以下两种方法来确保...

    自定义EL表达式

    自定义EL表达式是Java Web开发中的一个高级技巧,它允许开发者扩展标准的JSP Expression Language(EL)功能,以满足特定项目需求。EL是一种简洁的语法,用于在JSP页面中获取JavaBean属性或者调用Java方法。通过...

    Spring 整合Shiro 并扩展使用EL表达式的实例详解

    Spring 整合 Shiro 并扩展使用 EL 表达式实例详解 本文将详细介绍 Spring 整合 Shiro 框架,并通过扩展使用 Spring 的 EL 表达式来实现权限控制。Shiro 是一个轻量级的权限控制框架,应用非常广泛。下面是 Spring ...

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

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

    EL自定义函数引用

    首先需要通过`taglib`指令导入TLD文件,然后就可以在EL表达式中使用自定义函数了。 **JSP示例**: ```jsp &lt;%@ taglib prefix="el" uri="/WEB-INF/mytag.tld" %&gt; &lt;title&gt;EL自定义函数示例 原字符串: ${iklist...

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

    总的来说,当遇到JSP页面无法识别EL表达式的情况时,检查并调整JSP页面头部的 `isELIgnored` 属性或升级web.xml的版本是有效的解决策略。同时,确保你的JSP环境配置正确,例如Servlet容器(如Tomcat)的版本支持EL...

    jstl详细配置讲解

    `&lt;c:out&gt;`标签用于安全地输出EL表达式`${name}`的结果。 ### 4. JSTL与C标签的关系 C标签是JSTL核心库的一部分,提供了类似于Java的控制结构,如条件判断、循环等。例如,`&lt;c:if&gt;`用于条件判断,`&lt;c:forEach&gt;`用于...

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

    然而,在使用EL表达式时,有时候可能会遇到它不被解析,而是直接显示为字符串的问题。遇到这种情况,我们需要找到原因并解决它。 首先,我们知道在默认情况下,Servlet 2.4/JSP 2.0是支持EL表达式的。如果EL表达式...

    struts2属性文件struts.xml的配置

    - **`${oneInfor.getUserId()}`**:EL表达式,动态获取`oneInfor`对象的`getUserId()`方法返回值。 #### 六、示例分析 以下是一个具体的Action配置示例: ```xml &lt;action name="OneInfor" class="queryOneInfor"&gt;...

    混用JSTL及EL和Struts.txt

    此外,如果使用Struts框架,还需要确保在`/WEB-INF/lib`目录下有Struts和相关EL的库文件,以便正确解析EL表达式。 #### 在Struts中使用EL 当在Struts项目中使用EL时,需要注意的是Struts的配置也需要支持EL。在`...

    spring-webflow

    - **Stack Overflow**:使用标签 `spring-webflow` 发布问题。 **1.4 跟踪开发进度** 想要了解最新的开发进展和计划,请关注: - **GitHub**:官方代码仓库,可跟踪最新的代码提交。 - **官方博客**:发布最新的...

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

    通过理解`web.xml`的配置以及Servlet和JSP版本之间的差异,可以有效地解决EL表达式无法解析的问题。务必确保你的项目配置与所使用的Servlet容器兼容,以充分利用EL的强大功能。同时,检查并更新`web.xml`文件以匹配...

Global site tag (gtag.js) - Google Analytics