首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用JSP标签扩展来解决这个问题?

问如何用JSP标签扩展来解决这个问题?
EN

Stack Overflow用户
提问于 2009-05-17 23:15:24
回答 1查看 4.2K关注 0票数 2

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

已采取的步骤:

directory;

  • Defined
  1. 在TLD文件WEB-INF/classes中成功地编写和编译了CustomTag.java (扩展TagSupport),并给出了一个非常简单的示例,其中包括为无体标记使用empty值的<body-content>;
  2. 在JSP页面中使用标记,并使用指向my /WEB-INF/tlds/site.tld文件的taglib指令。H 211G 212

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

无法将

CustomTag解析为类型

谢谢你的回答,如果你需要更多的细节,请问。

这是我的TLD文件:

代码语言:javascript
复制
<?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文件:

代码语言:javascript
复制
<%@ 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类:

代码语言:javascript
复制
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;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-17 23:26:42

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

代码语言:javascript
复制
<tag>
    <name>cookieIterator</name>
    <tag-class>util.infoTemplates.CookieIterator</tag-class>
    <body-content>JSP</body-content>
</tag>

如果这不是原因,请张贴您的TLD文件和一个示例JSP。

编辑:所有标记类都必须有一个包。根据JSP2.0规范(JSP11.2节):

在JSP2.0中,引用来自未命名(a.k.a )的任何类是非法的。(默认)包.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/875715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档