问题描述
我在一个页面过期下面的错误时的视图的。有消息称,该错误页/home.xhtml将被显示。
,但实际上什么也看不见了,该页面是一样的,它只是冻结。我使用的 FullAjaxExceptionHandler 的距离的 Omnifaces 的,通过的。
I have the following error when view within a page is expired. The message says that the Error page '/home.xhtml' will be shown.
but actually nothing is shown, the page remains the same, and it is just frozen. I am using FullAjaxExceptionHandler from Omnifaces, described by balusC.
我使用Primefaces 3.5和Mojarra 2.1.17。
I am using Primefaces 3.5 and Mojarra 2.1.17.
Mär 11, 2013 1:40:30 PM org.apache.catalina.core.ApplicationContext log
SEVERE: FullAjaxExceptionHandlerx: An exception occurred during processing JSF ajax request. Error page '/home.xhtml' will be shown.
javax.faces.application.ViewExpiredException: viewId:/wishes_book.xhtml - View /wishes_book.xhtml could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:205)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Mär 11, 2013 1:40:30 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/home.xhtml]
java.lang.NullPointerException
at org.primefaces.renderkit.CoreRenderer.getWidgetBuilder(CoreRenderer.java:481)
at org.primefaces.component.menubar.MenubarRenderer.encodeScript(MenubarRenderer.java:36)
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:40)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeRow(PanelGridRenderer.java:143)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeStaticBody(PanelGridRenderer.java:107)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeBody(PanelGridRenderer.java:63)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeRow(PanelGridRenderer.java:143)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeStaticBody(PanelGridRenderer.java:107)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeBody(PanelGridRenderer.java:63)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.context.PartialViewContextImpl.renderAll(PartialViewContextImpl.java:404)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:289)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:982)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:411)
at com.meinanliegen.handlers.exceptions.FullAjaxExceptionHandler.renderErrorPageView(FullAjaxExceptionHandler.java:231)
at com.meinanliegen.handlers.exceptions.FullAjaxExceptionHandler.handleAjaxException(FullAjaxExceptionHandler.java:200)
at com.meinanliegen.handlers.exceptions.FullAjaxExceptionHandler.handle(FullAjaxExceptionHandler.java:145)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Mär 11, 2013 1:40:30 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/MeinAnliegen] threw exception
能否请你帮我一个建议,我怎么能解决他的问题?
Can you please help me with one suggestion how could I solve his problem?
推荐答案
这是PrimeFaces 3.5造成的。他们增加了一个的PhaseListener
创建并在呈现响应阶段把一个 WidgetBuilder
的背景属性。该 FullAjaxExceptionHandler
然而势力直接在不用时渲染阶段尚未在当前阶段渲染。这引起了 WidgetBuilder
是空
PrimeFaces组件的编码,因此该NPE期间。此外,在目前的阶段是呈现响应,那么它仍然不会渲染(与唯一原因之前工作,因为 FullAjaxExceptionHandler
有点太agressively清除整个上下文属性图力重新注入的JSF资源依赖性如CSS / JS文件),包括PrimeFaces WidgetBuilder
。
This is caused by PrimeFaces 3.5. They added a PhaseListener
which creates and puts a WidgetBuilder
as context attribute during render response phase. The FullAjaxExceptionHandler
however forces rendering directly in the current phase when not in render response phase yet. This caused the WidgetBuilder
to be null
during encoding of PrimeFaces components and hence this NPE. Also, when the current phase is render response, then it would still not work because FullAjaxExceptionHandler
was a bit too agressively clearing the entire context attribute map before rendering (with the sole reason to force re-injection of JSF resource dependencies like CSS/JS files), including the PrimeFaces WidgetBuilder
.
本报告为 OmniFaces问题120 。该 FullAjaxExceptionHandler
提高到渲染委托给JSF时,目前尚未呈现响应阶段,并且只删除从上下文的特定属性的属性映射。您需要更新OmniFaces到至少1.4(这是目前1.4.1),以得到它的工作。
This is reported as OmniFaces issue 120. The FullAjaxExceptionHandler
was improved to delegate the rendering to JSF when currently not in render response phase, and remove only the specific attributes from the context attribute map. You need to update OmniFaces to at least 1.4 (it's currently 1.4.1) in order to get it to work.
这篇关于当ViewExpiredException发生JSF错误页面未显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!