【问题标题】:Custom Tree Taglib on Tomcat 6&7: Unable to compile class for JSPTomcat 6 和 7 上的自定义树标记库:无法为 JSP 编译类
【发布时间】:2011-02-02 15:50:38
【问题描述】:

我正在使用自定义Tree Tag library 通过使用JSP taglib 机制来显示分层数据。我的 Tomcat 设置已成功部署其他 Web 应用程序,包括 JSP 和 servlet 示例,但它给我这个标签库带来了问题。我在很多地方都发现了同样的问题,但没有回应。任何帮助表示赞赏。提前致谢。

标签库声明如下:


 1:     &lt%@ taglib uri="WEB-INF/treetag.tld" prefix="tree" %&gt

出于调试目的,我已将此库的使用减少到一行,这就是第 20 行的代码。这是错误消息:


org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 20 in the jsp file: /hello.jsp
ITree cannot be resolved to a type
20:     &lt% ITree tree = new Tree(); %&gt

从上面的错误来看,服务器似乎找不到我放在 webapp/WEB-INF/lib 的库 (jenkov-prizetags-3.4.0.jar)。我已经解压了 jar 文件并找到了服务器找不到的完全相同的类,所以我倾向于认为它只是没有在 webapp/WEB-INF/lib 中查找。我在这里遗漏了什么吗?

编程环境:

  • Tomcat 6&7 - 同样的问题。
  • Java SDK 6

【问题讨论】:

    标签: jsp servlets taglib


    【解决方案1】:

    Taglibs 和 scriptlets 不能一起工作。您通常使用其中一个,而不是两个。

    至于您的scriptlet 中的编译错误,您只需像在普通Java 类中那样导入ITree 类即可。

    <%@page import="com.example.ITree" %>
    

    或者,更好的是,根本不要使用 scriptlets。该 Java 代码属于 Java 类,而不是 JSP 文件。

    【讨论】:

    • 感谢您的提示。我刚开始使用 Tomcat 和 JSP,最重要的是,我正在使用自定义标记库。我认为标签库描述符文件 (*.tld) 将标签与它们的类联系起来,可以进行导入。但如果你说的是真的,那它就可以解释我遇到的无法解释的错误了。
    • 我强烈建议您阅读 2001 年引入 JSP 2.0 之前未编写的教程/书籍。从这里开始:stackoverflow.com/tags/jsp/info
    • 谢谢,我导入了必要的库,问题解决了。我需要阅读更多关于为什么不鼓励使用 scriptlet,但它们会在我的开发阶段完成。如果我遵循正确,所有代码都会进入一个 Java 类,然后我会导入它?谢谢。
    • 这种工作应该由 servlet 在doGet() 方法中完成。要了解有关 servlet 的更多信息,请查看我们的 servlets wiki 页面:stackoverflow.com/tags/servlets/info。要了解不鼓励使用 scriptlet,请阅读 this answer,它还附带了常规方法的示例。
    • @BalusC 因此,我完全摆脱了 jsp 文件中的脚本,该文件将用纯 Java 代码编写的树模型存储在 servlet 中。然而,要构造树模型,我必须调用 servlet,然后访问我的 jsp 页面。如何让 jsp 调用 servlet?当然,不使用脚本。我觉得这是一个太多的后续问题,不能成为一个独立的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多