- 浏览: 44468 次
- 性别:
- 来自: 杭州
最新评论
-
chenyunhong:
[color=gray][/color][*][img][/i ...
OpenSessionInViewFilter 说明与配置
JSP中出现According to TLD or attribute directive in tag file, attribute value does not accept any expressions 收藏
应用部署运行的时候出现JSP异常, 发生在使用JSTL库的时候: According to TLD or attribute directive in tag file, attribute value does not accept any expressions, 可能是因为使用了JSP2.0版本, 同时又没有使用JSTL core库的备用版本(RT库), 以下有两种处理方法:
1. 修改web.xml.
<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.3版本的
<!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. 使用JSTL core RT库
JSTL core库的有两种taglib伪指令, 其中RT库即是依赖于JSP传统的请求时属性值, 而不是依赖于EL来实现(称为EL库.JSP2.0将支持EL)
JSP中使用<%@ taglib uri=http://java.sun.com/jstl/core prefix="c"%>在2.3版本都可以,在2.4就不行了, 难道是版本不兼容吗?
只要将
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
改为
<%@ taglib uri=http://java.sun.com/jstl/core_rt prefix="c"%>
就没有问题了
由于现行的JSTL有两种版本,因此使用起来还是有一些区别需要注意的。
1.JSTL1.0是支持Servlet2.3和JSP1.2规范的。http://java.sun.com/jstl/core
2.JSTL1.1是支持Servlet2.4和JSP2.0规范的。http://java.sun.com/jsp/jstl/core
这两种JSTL1.1的增强特性有以下几点:
1.JSTL1.1可以使用函数标签库
2.JSTL1.1规范中,JSP2.0容器已经能够独立的理解任何EL表达式。EL可以独立出现在JSP页面的任何角落。
3.JSTL1.1中的EL表达式不支持(X>Y ? X=1 : Y=2)的表达式
以下是一些容器支持的JSTL版本说明:
容器 | Servlet | JSP Specification |
Weblogic 8.1 | 2.3 | 1.2 |
Tomcat 3.3.1a | 2.2 | 1.1 |
Tomcat 4.1.27 | 2.3 | 1.2 |
Tomcat 5.0.12Beta | 2.4 | 2.0 |
近日做一个小系统,使用了Struts,还用到了JSTL。这套配置在以前开发项目的时候就用过的,不过当时没有深入了解。所以,导致本次使用时,遇到了一个小问题,浪费了一点时间。
所以,做了一个小小的调查,搞清楚了JSTL1.0和JSTL1.1的区别及使用方法。
现象
在<c:out>标签中使用了EL,结果运行时报错。说根据tld文件的说明,该标签不支持表达式(EL)。
原文为:
According to TLD or attribute directive in tag file, attribute value does not accept any expressions
依赖的环境及jar
1. 使用的标签库是从apache上down下来的。
http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html
一共两个文件,一个jstl.jar,一个standard.jar。
2. tomcat是5.0系列的。
原因
在JSP中声明uri的时候,写成了jstl 1.0的uri。
而1.0确实是不支持EL的,但是它的tld文件又存在于1.1的jar包中。
经过调查确认,总结如下三点:
1. jstl 1.0和1.1支持的servlet,jsp规范都不相同,支持相应规范的tomcat的版本也有要求的。具体如下。
NOTE: Standard-1.1 (JSTL 1.1) requires a JSP container that supports the Java Servlet 2.4 and JavaServer Pages 2.0 specifications. Jakarta Tomcat 5 supports the new specifications. The Standard-1.1 taglib has been tested with Tomcat 5.0.3. Standard-1.0 (implementation of the JSTL 1.0 specification) requires a JSP container that supports the Java Servlet 2.3 and JavaServer Pages 1.2 specifications. Jakarta Tomcat 4 supports these specifications. The Standard 1.0 taglib has been tested with Tomcat 4.1.24.
2. web.xml中要申明相应的servlet版本。
JSTL1.1和JSP2.0需要servlet2.4
<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">
JSTL1.0和JSP1.2需要servlet2.3
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.3 " xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_3 .xsd">
3. JSTL1.0和JSTL1.1的uri是不一样的,但是他们的tld文件同时存在于同一个standard.jar中。
解压缩下载的standard.jar,你会在/META-INF/下发现有一个c-1_0.tld,还有一个c.tld。
其中c-1_0.tld是JSTL1.0的core标签库的tld文件,c.tld是JSTL1.1的core标签库的tld文件。
用文本软件打开两个文件就会找到具体的uri。
JSTL1.0的使用方法为:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
JSTL1.1的使用方法为:
<%@ taglib uri="http://java.sun.com/jsp /jstl/core" prefix="c" %>
发表评论
-
jackrabbit 内容仓库
2011-05-12 09:16 1Java Content Rep ... -
spring中配置dbcp连接池
2011-03-17 09:37 1627使用ApplicationServer级别的连接池, 在A ... -
java程序员需要掌握的25点
2010-12-14 10:18 10381.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式( ... -
IT人士必去的10个网站
2010-12-07 13:04 23761、Chinaunix 网址:http://www.china ... -
spring jar 相关说明
2010-12-02 16:54 1050前半部分spring本身的 ... -
java枚举
2010-06-22 15:14 1069public class TestEnum { /*最普 ... -
Java调用SQL Server的存储过程详解
2010-01-20 12:11 12411使用不带参数的存储过程 使用 JDBC 驱动程序调用 ... -
正则表达式 匹配 手机和电话号码
2010-01-14 15:44 2078((^(13|15|18)[0-9]{9}$)|(^0[1,2 ... -
验证数字的正则表达式集
2010-01-12 14:03 1087验证数字的正则表达式集 验证数字:^[0-9]*$验证n位的 ... -
运行多个tomcat实例两法
2009-08-18 16:48 2169如果需要把一个alpha版 ... -
比较一下java写文本文件文件的性能
2009-06-05 10:58 1034最近对以前开发的一个通用数据迁移的软件进行优化。 ... -
java native关键字
2009-03-18 14:30 2896native是与C++联合开发的时候用的!java自己开发不用 ... -
java文件操作
2008-12-26 15:14 572package test; import java.io.* ... -
Java利用对象流对对象进行序列化
2008-12-26 11:16 1375在一个程序运行的时候,其中的变量数据是保存在内存中的,一旦程序 ... -
Java中的instanceof关键字
2008-12-15 12:11 805instanceof是Java的一个二元操作符,和==,> ... -
==与.equals()方法的区别
2008-12-15 12:10 1016==与.equals()的区别 比较内存地址是否相同:.eq ...
相关推荐
jstl1.2标签库,大家就不用去官网找了~
jstl标签使用文档,jstl标签使用帮助文档
JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签
jstl标签详解jstl标签详解jstl标签详解jstl标签详解jstl标签详解jstl标签详解jstl标签详解
jsp页面使用jstl标签需要导入的jar包
JSTL标签依赖包jar包html标签 JSTL标签依赖包jar包html标签 JSTL标签依赖包jar包html标签
本压缩文件包含了实用的JSTL标签库jstl.jar和standard.jar及使用方法,有效解决了JSTL配置问题!
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大...
jstl标签库jar包,jstl标签库jar包,使用java开发web程序的朋友请下
jstl标签库的配置,jstl标签库的配置
JSTL标签库-tomcat10-简化JSP中java代码
JSTL标签库依赖,内含Tomcat8、Tomcat10所需JSTL依赖
jstl需要导入的两个jar包:...Jstl.jar包是一款java中项目中如果要使用JSTL和EL表达式,就必须导入jstl.jar和standard.jar文件,可以让程序猿们在日常生活中更节约时间。需要的童鞋可以下载学习使用,下载地址安全无误!
JAVAEE实验报告EL表达式和jstl标签库的使用.pdf
JSTL标签库的jar包、JSTL标签库的配置和使用
JSTL标签库使用方法: 标签库 URI 前缀 使用模式 核心标签库 http://java.sun.com/jstl/core c <c:tagname…> 国际化标签(I18N) ...
jstl标签详解,当编写jsp时难免用到jstl标签,而且jstl也非常方面,文档中介绍了常用的jstl标签的用法。
JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。 JSTL目前的最新...
Java jsp 页面中使用jstl标签库的jar包
web项目中使用jstl标签配置流程,已经在页面中引用过程。