0

我们已经使用 DisplayTag 一段时间了,没有任何问题,但最近,我们有一个不稳定的硬盘,所以我们不得不恢复那里的一些东西。不幸的是,DisplayTag 在调用时破坏并停止了其他所有操作:

<display:table name="pageScope.userKeyList.licenseKeyList" id="userKey" pagesize="10" defaultsort="7" defaultorder="descending" sort="list" class="bodytext" width="100%" border="1">

将返回以下错误:

java.lang.NullPointerException
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:164)
org.displaytag.properties.TableProperties.getClassProperty(TableProperties.java:759)
org.displaytag.properties.TableProperties.getClassPropertyInstance(TableProperties.java:776)
org.displaytag.properties.TableProperties.getRequestHelperFactoryInstance(TableProperties.java:714)
org.displaytag.tags.TableTag.initParameters(TableTag.java:715)
org.displaytag.tags.TableTag.doStartTag(TableTag.java:600)
org.apache.jsp.misc.key_002dtable_jsp._jspService(key_002dtable_jsp.java:113)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)

我对 Apache Tomcat 和 Java 不太熟悉,但我怀疑它与 catalina 的安全策略有关。我希望有人可以确认这一点或帮助我指出正确的方向。我们目前在 Tomcat 5 上。

4

2 回答 2

0

我怀疑这不是 DisplayTag 问题,而是您尝试使用 DisplayTag 显示的基础数据的问题。例如,您是否检查以确保 所引用的对象pageScope确实具有非空userKeyList属性,并且该userKeyList属性确实具有非空licenseKeyList属性?

(只是阅读这些名称,我怀疑您的恢复可能没有恢复您期望的许可证密钥......)

于 2009-12-11T20:58:54.423 回答
0

从堆栈跟踪来看,看起来 Class.forName() 正在使用null名称参数调用。检查 TableTag 和 TableProperties 的源代码(在堆栈跟踪指示的行号处/附近)以了解它发生了什么。我的猜测是某些东西缺少必需的属性:配置文件或您的 JSP 对标记的使用。

于 2009-12-12T00:42:49.793 回答