我的spring应用程序有一个错误页面,其中包含一个可折叠的堆栈跟踪元素(显然是一个开发/调试选项)。它过去工作得很好,并显示来自控制器(有时来自JSP引擎)的适当堆栈跟踪。
Q:有可能是一个错误页面,还是应该是静态的?
Q:我做错什么了?
事件链(我认为)是由我的web.xml中定义的错误处理程序驱动的:
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/view/errors/internalError.jsp</location>
</error-page>在这个过程中的某个地方(切换到了maven构建系统、升级的jetty和Spring2.5 -> 3.0),我注意到这个错误页面已经停止工作了。它对一个问题呈现相同的结果--显示的异常堆栈跟踪是,而不是来自在控制器中抛出的异常的,而是来自错误页面本身的!
javax.servlet.ServletException: javax.servlet.jsp.JspTagException:
500 /WEB-INF/jsp/admin/errors/internalError.jsp
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
at org.apache.jsp.WEB_002dINF.jsp.admin.defaultParent_jsp._jspService(defaultParent_jsp.java:225)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)这里似乎正在发生的是以下一系列事件:
throw new RuntimeException("no bananas")
。
当呈现默认的父JSP时,JSP引擎似乎死了--它似乎在:org.apache.taglibs.standard.tag.common.core.ImportSupport中遇到了麻烦。我见过一些网络帖子,人们说这与从web目录导入有关。
// disallow inappropriate response codes per JSTL spec
if (irw.getStatus() < 200 || irw.getStatus() > 299) {
throw new JspTagException(irw.getStatus() + " " + stripSession(targetUrl));
}虽然这里看起来像任何HTTP 500,但是错误会破坏它。但这难道不是页面应该犯的错误吗?
发布于 2011-03-01 23:53:48
Q:有可能是一个错误页面,还是应该是静态的?
一切都很好。它甚至可以是一个servlet之类的东西。当然,只要它没有臭虫。
问:我做错什么了?
您的错误页面有一个错误。显然,您在错误页面中使用<c:import>来包含来自/WEB-INF的片段。这是不允许的,因为它不是一个公共资源(老实说,我不记得它在古老的JSTL版本中会起作用)。而是使用<jsp:include>。
https://stackoverflow.com/questions/5161597
复制相似问题