Java自定义标记don';t工作/使用问题

Java自定义标记don';t工作/使用问题,java,jsp,Java,Jsp,我对JSP中的自定义标记有很大的问题。我在WEB-INF/TLD中创建了一个名为“装饰”的标记库描述符文件。我将前缀设置为“d”。然后我创建了名为“decorateHandler”的标记处理程序类 我想用简单的方式装饰我的JSP标题页中的文本,但我得到了一个错误 My decoration.tld文件: <tlib-version>1.0</tlib-version> <short-name>l</short-name> <uri&g

我对JSP中的自定义标记有很大的问题。我在WEB-INF/TLD中创建了一个名为“装饰”的标记库描述符文件。我将前缀设置为“d”。然后我创建了名为“decorateHandler”的标记处理程序类

我想用简单的方式装饰我的JSP标题页中的文本,但我得到了一个错误

My decoration.tld文件:

<tlib-version>1.0</tlib-version>
  <short-name>l</short-name>
  <uri>/WEB-INF/tlds/decorate</uri>
  <tag>
    <name>decorate</name>
    <tag-class>decorateHandler</tag-class>
    <body-content>JSP</body-content> 
    <attribute>
        <name>value</name>
    </attribute>
  </tag>
</taglib>
1.0
L
/WEB-INF/tlds/INF
装饰
装饰工
JSP
114:
115:
jsp文件:[/index.jsp]的第[112]行出错
无法将decorateHandler解析为类型
109:
  • 110: 114:
  • 115: jsp文件:[/index.jsp]的第[112]行出错
    方法get(Class首先,我认为您应该检查web容器的日志(例如Tomcat、Glassfish?)。该错误的堆栈跟踪将在那里提供,并提示您实际原因。无论如何,乍一看,很明显,该错误是由自定义装饰程序taglib引起的,它似乎在最后执行了一个
    bodyContent.clearBody()
    。我认为这里不允许这样做,也许您是想执行
    bodyContent.flush()


    关于如何创建自定义jsp标记的教程。

    Man,谢谢您的回答,但将其更改为bodyContent.flush()什么也没做。我正试图在我的it项目中使用tag it,但即使我使用教程,它也不起作用,所以我真的很困惑。你在哪个容器上运行这个项目?我想它是tomcat,因为我看到它在使用Jasper。你有没有检查服务器日志?否则你可以在你的问题中添加stacktrace。还有tag class正确吗?我看到你指定了decorateHandler,你确定它不在包下吗?也许可以发布标签的完整源代码?tld也以标签开始,因为它在你的帖子中丢失了吗?
    private String value;
    
        private void writeTagBodyContent(JspWriter out, BodyContent bodyContent) throws IOException {
    
            out.println("<font color='"+value+"'>");
            bodyContent.writeOut(out);
            out.println("</font>");
    
            bodyContent.clearBody();
        }
    
    <%@taglib uri="/WEB-INF/tlds/decorate.tld" prefix="d" %>
    
     <d:decorate value="red">Lorem ipsum</d:decorate>
    
    org.apache.jasper.JasperException: Unable to compile class for JSP: 
    
    An error occurred at line: [112] in the jsp file: [/index.jsp]
    decorateHandler cannot be resolved to a type
    109:                         <li class="nav-item">
    110:                             <a class="nav-link" href="index.jsp">
    111:                                 <img src="logo.png" height="20px" width="20px">
    112:                                 <d:decorate value="red">Lorem ipsum</d:decorate>
    113:                             </a>
    114:                         </li>
    115:                     </ul>      
    
    
    An error occurred at line: [112] in the jsp file: [/index.jsp]
    decorateHandler cannot be resolved to a type
    109:                         <li class="nav-item">
    110:                             <a class="nav-link" href="index.jsp">
    111:                                 <img src="logo.png" height="20px" width="20px">
    112:                                 <d:decorate value="red">Lorem ipsum</d:decorate>
    113:                             </a>
    114:                         </li>
    115:                     </ul>      
    
    
    An error occurred at line: [112] in the jsp file: [/index.jsp]
    The method get(Class<? extends Tag>) in the type TagHandlerPool is not applicable for the arguments (Class<decorateHandler>)
    109:                         <li class="nav-item">
    110:                             <a class="nav-link" href="index.jsp">
    111:                                 <img src="logo.png" height="20px" width="20px">
    112:                                 <d:decorate value="red">Lorem ipsum</d:decorate>
    113:                             </a>
    114:                         </li>
    115:                     </ul>      
    
    
    An error occurred at line: [112] in the jsp file: [/index.jsp]
    decorateHandler cannot be resolved to a type
    109:                         <li class="nav-item">
    110:                             <a class="nav-link" href="index.jsp">
    111:                                 <img src="logo.png" height="20px" width="20px">
    112:                                 <d:decorate value="red">Lorem ipsum</d:decorate>
    113:                             </a>
    114:                         </li>
    115:                     </ul>      
    
    
    Stacktrace:
        org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
        org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:212)
        org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:549)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:350)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:595)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        Filtr2.doFilter(Filtr2.java:67)