JSP 2.0 - 在没有.tld声明的JSP文档中使用标记文件

时间:2012-06-01 05:59:56

标签: jsp jsp-tags

我想在 jsp文档文件中使用类似的内容:

<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

然而,在我见过的所有30多个例子中,每个人都使用简单的jsp语法,而不是jsp文档语法。像这样:

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
    xmlns:t="/WEB-INF/tags" 
    xmlns="http://www.w3.org/1999/xhtml"
    version="2.0">

根本不起作用。页面上看不到驻留在/ WEB-INF /标签中的所有标记文件。只有我定义了一个tld文件,并列出了那里的所有标签,才能在页面上访问它们。是否可以避免tld声明并仍在jsp文档页面中使用标记文件?

2 个答案:

答案 0 :(得分:6)

您需要在xmlns属性中添加前缀“urn:jsptagdir:”。在你的情况下,

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
    xmlns:t="urn:jsptagdir:/WEB-INF/tags" 
    xmlns="http://www.w3.org/1999/xhtml"
    version="2.0">

您还可以使用前缀“urn:jsptld:”来指定TLD的位置。有关更多详细信息,请参阅http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPX3.html中的“声明标记库”部分。

答案 1 :(得分:5)

1在WEB-INF /目录中创建标签目录

2创建您的标签所在的sample.tag文件:

<%@ attribute name="exampleAttribute" required="true" type="java.lang.String" description="Example attribute" %>

<c:out value="${exampleAttribute}">

3在jsp中声明要使用它的标记库:

<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

4使用它:

<tags:sample exampleAttribute="Hello from custom tag!"/>

我认为您应该拥有Web应用程序2.5的版本。只考虑那个版本支持JSP 2.0(检查web.xml)。