gpt4 book ai didi

Java 自定义标签不起作用/使用有问题

转载 作者:行者123 更新时间:2023-12-01 19:12:34 26 4
gpt4 key购买 nike

我在 JSP 中的自定义标记方面遇到了巨大的问题。我在 WEB-INF/tlds 中创建了一个名为“decorate”的标签库描述 rune 件。我将前缀设置为“d”。然后我创建了名为“decorateHandler”的标记处理程序类。

我想以简单的方式装饰 JSP 标题页中的文本,但出现错误...

我的decorate.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>

在decorateHandler.java中我尝试这样做:

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();
}

当然,我已经为字符串值变量创建了 getter 和 setter。

在index.jsp中我已经包含了taglib,如下所示:

<%@taglib uri="/WEB-INF/tlds/decorate.tld" prefix="d" %>

我尝试了这样的事情:

 <d:decorate value="red">Lorem ipsum</d:decorate>

但我有一个异常(exception):

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)

我不知道问题出在哪里...:/

最佳答案

首先,我认为您应该检查 Web 容器的日志(例如 Tomcat、Glassfish?)。该错误的堆栈跟踪将在那里可用,并提示您实际原因是什么。不管怎样,乍一看,很明显错误是由自定义装饰器 taglib 引起的,它似乎在最后做了一个 bodyContent.clearBody() 。我认为这里不允许这样做,也许您打算改为执行 bodyContent.flush()

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

关于Java 自定义标签不起作用/使用有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59459342/

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