gpt4 book ai didi

jsp-tags - JSP标签扩展如何解决这个问题?

转载 作者:行者123 更新时间:2023-12-04 07:07:39 24 4
gpt4 key购买 nike

从 JSP 和 servlet 开发开始,我在将无正文自定义标记插入 JSP 页面时遇到了一些问题。

完成的步骤:

  • TagSupport 中成功编写并编译了 CustomTag.java(扩展 WEB-INF/classes)目录;
  • 定义了TLD文件,举个很简单的例子,包括<body-content>empty无体标签的值(value);
  • 在 JSP 页面中使用标记,taglib 指令指向我的 /WEB-INF/tlds/site.tld文件。

  • 考虑到所有这些,您是否知道为什么 Tomcat 会发送这样的错误:

    CustomTag cannot be resolved to a type



    预先感谢您的回答,如果您需要更多详细信息,请询问。

    这是我的 TLD 文件:
    <?xml version="1.0" encoding="ISO-8859-1"?>

    < ! DOCTYPE taglib
    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

    <taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>customlib</short-name>
    <description>Custom library.</description>
    <tag>
    <name>header</name>
    <tag-class>HeaderTag</tag-class>
    <body-content>empty</body-content>
    <description>...</description>
    </tag>
    </taglib>

    JSP 文件:
    <%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="" %>
    <%@ taglib uri="/WEB-INF/tlds/customlib.tld" prefix="clib" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>title</title>
    </head>

    <body>
    <clib:header />
    </body>
    </html>

    HeaderTag 类:
    import javax.servlet.jsp.JspTagException;
    import javax.servlet.jsp.tagext.TagSupport;
    import java.io.IOException;

    public class HeaderTag extends TagSupport {

    public int doEndTag() throws JspTagException {
    try {
    pageContext.getOut().print("<p>header</p>");
    }
    catch (IOException e) {
    throw new JspTagException("Error.");
    }
    return EVAL_PAGE;
    }
    }

    最佳答案

    你已经重建和重新部署,对吗?在这种情况下,我最好的猜测是您在 TLD 文件中遗漏了 指令。

    <tag>
    <name>cookieIterator</name>
    <tag-class>util.infoTemplates.CookieIterator</tag-class>
    <body-content>JSP</body-content>
    </tag>

    如果这不是原因,请发布您的 TLD 文件和示例 JSP。

    编辑:所有标签类都必须有一个包。根据 JSP 2.0 规范(JSP 11.2 部分):

    As of JSP 2.0, it is illegal to refer to any classes from the unnamed (a.k.a. default) package.

    关于jsp-tags - JSP标签扩展如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875715/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com