4

我想在我的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 文档页面中使用标记文件?

4

2 回答 2

6

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)。

于 2012-06-01T06:53:28.293 回答
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中的“声明标记库”部分。

于 2012-08-20T15:33:49.517 回答