我安装了 Weblogic 10.3.3 并且似乎遇到了递归 JSP 标记的问题。在互联网上,我发现其他一些人遇到了同样的问题(这里和这里),但没有解决方案。有人建议它在 Weblogic 12 中已修复,或者在 9 中工作,但我无法证实这一点。
该应用程序是使用 Spring/Spring Roo/Apache Tiles/jspx 构建的。正在显示的模型类类似于:
public class Programme {
private String name;
private final List<Programme> programmes = new ArrayList<Programme>();
...(getter/setter)...
}
然后我有一个这样的标签:
<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:coursedataimport="urn:jsptagdir:/WEB-INF/tags/coursedataimport" version="2.0">
<jsp:output omit-xml-declaration="yes" />
<jsp:directive.attribute name="programme" type="package.Programme" required="true" rtexprvalue="true" />
<c:out value="${programme.name}" />
<ul>
<c:forEach var="p" items="${programme.programmes}">
<li><coursedataimport:programme programme="${p}" /></li>
</c:forEach>
</ul>
</jsp:root>
这行不通。请求页面时,应用程序容器似乎崩溃了(可能是一些堆栈溢出,但我在日志中找不到),并且重新加载了应用程序上下文。在 Tomcat 7 中它工作正常。
显示的异常是这样的,但我不确定它是否相关(因为它谈到了错误页面):
[ServletContext@483389576[app:app-ear-0 module:appmodule path:/CONTEXTROOT spec-version:2.5]] 提供错误页面时出现问题。org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 java.lang.ClassCastException: org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 处的 org.apache.tiles.ArrayStack org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet. java:779) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:821) 在 ...
以前有没有人遇到过这些问题,或者有人知道解决方法吗?有关如何调试此问题或如何解决递归标记的任何提示(因为我想显示一棵树,所以有点挑战)。提前致谢。