JSP 2.0-在JSP文档中使用标记文件而不使用.tld声明

JSP 2.0-在JSP文档中使用标记文件而不使用.tld声明,jsp,jsp-tags,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="

我想在我的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/tags中的所有标记文件。只有定义一个tld文件,并在其中列出所有标记,才能在页面上访问它们。是否可以避免tld声明,并且仍然在jsp文档页面中使用标记文件?

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的版本。仅从支持JSP2.0的版本开始考虑(签入web.xml)。

您需要在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的位置。有关更多详细信息,请参阅中的“声明标记库”部分。

JSP页面和文档具有不同的语法。您使用了页面语法,但我需要使用jsp文档语法(纯xml)编写的与之相当的
。如果我在我的文档中使用您的语句,我只会得到一个异常,因为它不是jsp文档的有效代码。对我来说非常有用!!