PropertyNotFoundException后的JSF错误页面

PropertyNotFoundException后的JSF错误页面,jsf,error-handling,Jsf,Error Handling,我有常见的JSF错误处理设置 <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.xhtml</location> </error-page> 据我所知,问题是原始页面的呈现已经开始,并且调用了getOutputStream()。现在,当错误页面应该呈现时,再次调用getOutputStream

我有常见的JSF错误处理设置

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.xhtml</location>
</error-page>
据我所知,问题是原始页面的呈现已经开始,并且调用了
getOutputStream()
。现在,当错误页面应该呈现时,再次调用
getOutputStream()
,因为规范说不能执行两次,所以引发了上述异常

或者我不明白什么

当然,整个问题都是由facelet中的打字错误引起的,可以通过IDE进行验证,我只是想知道是否有一种方法可以显示这种类型或错误的错误页面


谢谢回答我自己的问题,此错误消息的原因是使用了。
在这种情况下,当呈现版面内容失败时,版面本身无法呈现。

哪个Mojarra和Tomcat版本?最近试过吗?你有没有为了简洁/安全而从堆栈跟踪中删除的servlet过滤器?哦,很抱歉,我使用的是Mojarra 2.1.7&Pivotal tc Server Developer Edition v3.0。但实际上,这种行为也可以在Tomcat7和WebSphere7上复制。是的,我有一些过滤器,但这些只适用于原始页面,而不是我的错误页面。如果有帮助,我可以发布完整的堆栈跟踪…你能试试最新的Mojarra 2.1.x版本吗?(只是为了排除它是由Mojarra bug引起的;2.1.7也相当古老)。你能保证这些过滤器不会对响应体做任何事情吗?只需使用2.1.29-01(应该是最新的2.1.x)进行尝试,结果是一样的。我看到了过滤器的发展方向,但没有一个涉及到这一点,即使是调试也表明所有的JSF都在调用ExternalContextImpl.getResponseOutputWriter()。一般来说,我会期望这种行为,因为原始页面和错误页面都需要使用编写器来编写HTML。只是因为原始页面呈现失败,所以有人试图呈现错误页面。原始页面在PrimeFaces DataTable编码期间遇到异常,不确定它是否重要。。。。
Mar 17, 2015 10:22:09 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/error.xhtml]
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:578)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:212)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:109)
at com.sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.java:723)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.createResponseWriter(FaceletViewHandlingStrategy.java:938)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:377)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:523)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:427)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:376)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:146)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:277)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)