我们使用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上。
发布于 2009-12-12 04:58:54
我怀疑这不是DisplayTag的问题,而是您试图用DisplayTag显示的底层数据的问题。例如,您是否检查以确保pageScope引用的对象确实具有非空的userKeyList属性,以及userKeyList属性确实具有非空的licenseKeyList属性?
(只是阅读这些名称,我怀疑您的恢复可能没有恢复您期望的许可证密钥...)
发布于 2009-12-12 08:42:50
从堆栈跟踪可以看出,似乎正在使用null name参数调用Class.forName()。检查TableTag和TableProperties的源代码(位于/靠近堆栈跟踪所指示的行号),以找出它是怎么回事。我的猜测是某个东西缺少必需的属性:要么是配置文件,要么是JSP使用的标记。
https://stackoverflow.com/questions/1890681
复制相似问题