`
longyunyinxue
  • 浏览: 6418 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

JSP中出现According to TLD or attribute directive in tag file, attribute value does

    博客分类:
  • JSP
 
阅读更多
According to TLD or attribute directive in tag file, attribute value does not accept any expressions

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
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" >
</web-app>
jsp代码:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>   

1+2+3 = ${1+2+3} <br>   

1+2+3 = <c:out value="6" /> <br>

此时执行没有任何问题。

1+2+3 = <c:out value="${1+2+3}" />执行时就会出现:

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

昨天少了一个jsp,所以一直出现问题。

代码

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

写成   

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

今天再试。发现JSTL1.1可以用。但是用JSTL1.0时,出现问题。

就是把JSTL1.1的库放到/WEB-INF/lib/ 下。

刚开始我是netbeans 5.5.1中的JSTL库拷贝出来发现可以用。后来用jstl1.1.2的库,也是可以用。

总结:

JSTL1.1的库 在JSP2.0(Servlet 2.4)及以后(推荐用JSTL1.1及以上)用:

代码

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

web.xml

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

<web-app version="2.4"

         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" >

</web-app>

在 Servlet2.3及以前,

代码

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

比2.4以后版本少了jsp

web.xml

<?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>  

在Servlet2.3中最好用JSTL1.0,如果用JSTL1.1,请加上

<?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>       

    <taglib>  

        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>  

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

    </taglib>  

</web-app>

把tld目录下的c.tld拷贝到/WEB-INF?下。

找到官方下载地址:

http://jakarta.apache.org/site/downloads/downloads_taglibs.html

选择 Standard 1.0 Taglib 和Standard 1.1 Taglib 可以下载jstl1.0和jstl1.1版本。

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

说的是对应tag的属性不支持表达式传入。解决的办法是,在tld文件的相应tag的相应属性中加上rtexprvalue属性并设置为true,比如:

<tag>

 <name>CustomTag</name>

 ……

 <attribute>

  <name>AttName</name>

  <rtexprvalue>true</rtexprvalue>

 </attribute>

</tag>

网上说这个和Tomcat的版本也有关系(5.x),我用的恰好是5.0.27,不过这个没有证实过。

应用部署运行的时候出现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"%>

就没有问题了
分享到:
评论

相关推荐

    jsp之c标签用法实例分析.docx

    - 在JSP 2.4版本中,使用JSTL可能遇到与EL(Expression Language)的兼容性问题,导致错误提示“According to TLD or attribute directive in tag file, attribute value does not accept any expressions”。...

    使用propertities配置文件的简单的自定义标签入门例子

    1. 引入TLD文件:在JSP页面的`&lt;jsp:directive.page&gt;`或`&lt;jsp:root&gt;`标签中引入TLD文件,以便识别自定义标签。 2. 使用自定义标签:在页面中像使用普通HTML标签一样使用自定义标签,并传递配置文件路径作为属性。 ```...

    JSP/Servlet

    您可以將一些網頁格式處理或是限定存取之類的需求,使用標籤庫來處理,程式邏輯撰寫在標籤處理類別(Tag Handler Class)中,並定義好標籤庫定義檔案(.tld),而在JSP網頁中使用自訂標籤來撰寫網頁。 簡介 Tag ...

    JSP自定义标签源码

    - **导入标签库**:在JSP页面中,通过`&lt;jsp:directive.taglib&gt;`指令导入自定义标签库,指定URI和TLD文件的位置。 - **使用标签**:导入后,可以像使用标准JSP标签一样使用自定义标签,例如`&lt;myTag:myCustomTag ...

    JSP指令元素-tablib

    在JavaServer Pages (JSP) 技术中,`&lt;jsp:directive.taglib&gt;` 是一个指令元素,用于引入一个标签库,也就是我们通常所说的Taglib。Taglib是JSP的一个强大特性,它允许开发者创建自定义的标签,以增强页面的可读性和...

    JSP简单标签

    在Java服务器页面(JSP)技术中,简单标签(Simple Tags)是自定义标签的一种形式,它们为开发者提供了更简洁、可读性更强的代码,相比传统的JSP脚本元素和自定义标签库(Tag Library Directive,TLD),简单标签在...

    JSP标签,自定义标签

    3. 标签库引用(Taglib Directive):在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入自定义标签库。 **二、创建自定义标签** 创建自定义标签通常包括以下步骤: 1. 编写标签处理类:例如,创建一个名为`MyCustomTag....

    JSP2.0技术手册(带示例源码)

    5. **自定义指令的增强**:新增了`&lt;jsp:directive.page&gt;`、`&lt;jsp:directive.include&gt;`和`&lt;jsp:directive.attribute&gt;`等指令,使得对页面、包含文件以及自定义标签属性的控制更加强大。 6. **错误处理与异常处理**:...

Global site tag (gtag.js) - Google Analytics