无法在Java中为自定义标记加载标记处理程序类

Jan*_*ine 3 java jsp servlets custom-tags

我正在使用Java中的自定义标记,我收到一个错误.让我详细说明所涉及的文件:

我的tag.tld(路径为:\ WEB-INF\tlds\tag.tld)具有以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" 
                        "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">


<taglib>
<tlibversion>0.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>message</shortname>

<tag>
<description>StringReverseTag</description>
<name>string</name>
<tag-class>mytag.StringReverseTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>data</name>
<required>true</required>
</attribute>
</tag>
</taglib>
Run Code Online (Sandbox Code Playgroud)

ReverseEx.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"%>
<!DOCTYPE html>
<%@taglib uri="/WEB-INF/tlds/tag.tld" prefix="jen" %> 
<jen:string data="EARTH"/>

<html>
<head>
<title>Tag Example</title>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

助手班:

package chap4;

import java.io.IOException;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;

public class StringReverseTag extends SimpleTagSupport{
    private String data;
    public void setData(String data) {
    this.data=data;
    }

    @Override
    public void doTag() throws JspException, IOException{
        JspWriter out = getJspContext().getOut();
        StringBuffer sb= new StringBuffer(data);
        sb.reverse();
        out.print(sb);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

org.apache.jasper.JasperException:file:... Struts/Struts/build/web/ReverseEx.jsp(10,0)PWC6032:无法为标签"jen:string"org加载标签处理程序类"mytag.StringReverseTag" .apache.jasper.JasperException:PWC6032:无法为标记"jen:string"加载标记处理程序类"mytag.StringReverseTag"... Struts/Struts/build/web/ReverseEx.jsp(10,0)... Struts\Struts \nbproject\build-impl.xml:924:Java返回:1 BUILD FAILED(总时间:2秒)

我究竟做错了什么?

Ram*_*i.Q 6

在你写的tag.tld文件中:

<tag-class>mytag.StringReverseTag</tag-class>
Run Code Online (Sandbox Code Playgroud)

这意味着:你的班级StringReverseTag应该是myTag打包的.但在你的代码中StringReverseTag我可以看到你有chap4包装!

解决你的问题只需改变:

<tag-class>mytag.StringReverseTag</tag-class>
Run Code Online (Sandbox Code Playgroud)

<tag-class>chap4.StringReverseTag</tag-class>
Run Code Online (Sandbox Code Playgroud)