- 浏览: 45984 次
- 性别:
- 来自: 杭州
最新评论
-
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 1663使用ApplicationServer级别的连接池, 在A ... -
java程序员需要掌握的25点
2010-12-14 10:18 10661.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式( ... -
IT人士必去的10个网站
2010-12-07 13:04 24671、Chinaunix 网址:http://www.china ... -
spring jar 相关说明
2010-12-02 16:54 1098前半部分spring本身的 ... -
java枚举
2010-06-22 15:14 1127public class TestEnum { /*最普 ... -
Java调用SQL Server的存储过程详解
2010-01-20 12:11 12721使用不带参数的存储过程 使用 JDBC 驱动程序调用 ... -
正则表达式 匹配 手机和电话号码
2010-01-14 15:44 2131((^(13|15|18)[0-9]{9}$)|(^0[1,2 ... -
验证数字的正则表达式集
2010-01-12 14:03 1137验证数字的正则表达式集 验证数字:^[0-9]*$验证n位的 ... -
运行多个tomcat实例两法
2009-08-18 16:48 2201如果需要把一个alpha版 ... -
比较一下java写文本文件文件的性能
2009-06-05 10:58 1105最近对以前开发的一个通用数据迁移的软件进行优化。 ... -
java native关键字
2009-03-18 14:30 2924native是与C++联合开发的时候用的!java自己开发不用 ... -
java文件操作
2008-12-26 15:14 611package test; import java.io.* ... -
Java利用对象流对对象进行序列化
2008-12-26 11:16 1408在一个程序运行的时候,其中的变量数据是保存在内存中的,一旦程序 ... -
Java中的instanceof关键字
2008-12-15 12:11 833instanceof是Java的一个二元操作符,和==,> ... -
==与.equals()方法的区别
2008-12-15 12:10 1061==与.equals()的区别 比较内存地址是否相同:.eq ...
相关推荐
API JAR通常包含的是编译时所需的类和接口,开发者在编写JSP页面时会依赖这些接口来使用JSTL标签。例如,`fmt`, `fn`, `c`, `sql`, 和 `tags`等核心库的接口都在这个JAR中。 2. **JSTL Implementation (jstl-impl-...
在Web开发中,JSP(Java Server Pages)是一种用于开发动态网站的技术,而JSTL(JavaServer ...这些知识点对于使用JSTL标签库进行Web开发的开发者来说是非常重要的,能够帮助他们更有效地解决实际开发中遇到的问题。
这种问题通常表现为JSTL标签不被识别,或者EL表达式直接被输出,而不是被正确计算和显示。 要解决这个问题,通常需要确保几个关键的配置正确设置。首先,确认在项目的pom.xml文件中是否已经添加了JSTL的依赖。通常...
关于 JSP 页面使用 JSTL 的异常分析 在 JSP 页面中使用 JSTL 是一个非常常见的做法,但是有时可能会出现一些异常。这些异常可能是由于 Tomcat 的 lib 目录中没有 JSTL 的 jar 包所导致的。解决方法是将 JSTL 的 jar...
- 现在,你可以使用如`<c:out>`、`<c:if>`等JSTL标签进行页面逻辑控制和数据输出。 4. **自定义tld文件**: - 当你需要创建自定义标签时,需要编写一个tld文件来定义标签的行为。tld文件是XML格式,包含了标签的...
JSTL 标签 发生 uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application问题时解决方法
现在,我们可以在JSP页面中正常使用如`<c:forEach>`、`<c:if>`等JSTL标签了。 在20180317这个压缩包文件中,可能包含了上述提到的`jstl-1.x.x.jar`和`standard-1.x.x.jar`文件,解压并正确导入项目后,就可以解决...
在Java Web开发中,JSTL(JavaServer Pages Standard Tag Library)是一个标准的标签库,用于简化JSP页面的编写,提高代码的...通过检查和修正这些方面,通常可以成功解决这个问题,使得JSTL标签在JSP页面中正常工作。
当JSP容器(如Tomcat)找不到这些TLD文件时,会报错,无法正确解析JSTL标签。 在压缩包内的文件中: 1. `jstl.jar`:这是JSTL的核心库文件,包含了所有JSTL标签的实现。在JSP页面中使用JSTL,需要将这个jar文件添加...
JSTL标签库常常与EL(Expression Language)一起使用,EL是一种轻量级的脚本语言,用于获取和设置JavaBean属性、集合元素等。在上面的例子中,`${yourVariable}`就是EL表达式。 4. **优点** 使用JSTL和C标签库,...
在Eclipse中,如果没有引入这两个jar包,当尝试使用JSTL标签时,Eclipse可能会报错,因为编译器找不到相应的类和方法。例如,尝试使用`<c:forEach>`进行迭代或者`<fmt:formatDate>`进行日期格式化时,如果没有这些库...
5. **使用JSTL标签**:现在你可以正常地在JSP页面中使用`c:`标签了,例如: ```jsp <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ... ${list}" var="item"> ${item} ``` 在这段...
当JSP页面中使用了JSTL标签,而服务器环境中没有对应的库,就会导致编译错误。将这两个jar包添加到Web应用的类路径(classpath)或WEB-INF/lib目录下,可以解决此类问题。 **JSTL和EL(Expression Language)的关系...
3. **使用EL(Expression Language)和JSTL**:EL和JSTL是推荐在JSP中使用的表达式语言和标签库,它们可以更安全地处理数据和控制流程,而不会引发`return`语句的问题。 4. **配置MyEclipse的验证设置**:根据提供...
首先,`taglib`是JSP标签库的定义,用于引入自定义标签或标准标签库,如JSTL(JavaServer Pages Standard Tag Library)。在`web.xml`中,我们通常会看到类似以下的`taglib`元素: ```xml <taglib-uri>/tags/my...
为简化我们的jsp代码,会引入JSTL标准标签库,它可以方便我们对集合进行遍历、判断等操作。但引入指令中uri="http://java.sum.com/jsp/jstl/core”会报错,处理方案已备好,拿走不谢。
解决struts2中报错:...将这两个jar包拷贝到WebContent/WEB-INF/lib目录下,可解决当前App报错,若拷贝到Tomcat 7.0/lib目录下,可解决所有App的此类报错。
另一个常见的错误是缺少依赖库,如JSP标签库(JSTL)。如果报错提示找不到jstl.jar,你需要下载这个库,并将其添加到项目的类路径中。同样,通过"Build Path" -> "Configure Build Path" -> "Libraries" -> "Add ...
- 修改`web.xml`文件中的`<jsp-config>`部分,确保所有必需的JSTL标签库都已正确配置,参考示例: ```xml <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/tlds/fmt.tld ...
1. 在JSP页面顶部导入JSTL库:`<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>`,这将允许使用以`c:`开头的JSTL标签。 2. 在项目的类路径中包含`jstl.jar`和`standard.jar`。 3. 如果是在较新的...