在渲染响应阶段单击导航按钮时出现异常

时间:2015-07-14 12:27:41

标签: java jsf jsf-2 primefaces myfaces

我有一个使用MyFaces 2.2.8和PrimeFaces 5.2在Tomcat 8.0.23中运行的JSF应用程序。

所有页面都是使用Facelets构建的,顶层菜单和下面的内容区域。在某些页面上,内容区域需要更长的时间来渲染(PrimeFaces手风琴中的多个PrimeFaces DataTables;使用c:forEach渲染手风琴选项卡)。当我在小时间范围内单击菜单时,标题已经呈现但内容区域没有,我得到一个NullPointerException。

menuitem标签如下所示:

org.apache.myfaces.view.facelets.el.FaceletStateValueExpression.getWrapped()

bean.doSomething()返回带有导航目标的String。

NullPointerException发生在javax.servlet.ServletException: java.lang.NullPointerException at org.omnifaces.filter.FacesExceptionFilter.doFilter(FacesExceptionFilter.java:69) at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at my.application.web.filter.filter.AuthorizationFilter.doFilter(AuthorizationFilter.java:85) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at my.application.web.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478) 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) Caused by: java.lang.NullPointerException at org.apache.myfaces.view.facelets.el.FaceletStateValueExpression.getWrapped(FaceletStateValueExpression.java:73) at org.apache.myfaces.view.facelets.el.FaceletStateValueExpression.getValue(FaceletStateValueExpression.java:107) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:74) at org.apache.el.parser.AstValue.getValue(AstValue.java:137) at org.apache.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:43) at org.apache.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:49) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:74) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96) at org.apache.myfaces.view.facelets.tag.TagAttributeImpl.getObject(TagAttributeImpl.java:431) at org.apache.myfaces.view.facelets.tag.TagAttributeImpl.getValue(TagAttributeImpl.java:389) at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:305) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50) at org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:161) at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59) at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:521) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:575) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:553) at org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:240) at org.apache.myfaces.view.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:228) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:55) at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:373) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50) at org.apache.myfaces.view.facelets.tag.jstl.core.ForEachHandler.applyFirstTime(ForEachHandler.java:385) at org.apache.myfaces.view.facelets.tag.jstl.core.ForEachHandler.apply(ForEachHandler.java:228) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:55) at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:373) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46) at org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:161) at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59) at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:521) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:575) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:553) at org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:240) at org.apache.myfaces.view.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:228) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:55) at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:373) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50) at org.apache.myfaces.view.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:86) at org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178) at org.apache.myfaces.view.facelets.impl.TemplateContextImpl$TemplateManagerImpl.apply(TemplateContextImpl.java:193) at org.apache.myfaces.view.facelets.impl.TemplateContextImpl.includeDefinition(TemplateContextImpl.java:136) at org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:476) at org.apache.myfaces.view.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:94) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:55) at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:373) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46) at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46) at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:521) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:575) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:553) at org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:240) at org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:151) at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59) at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48) at org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:189) at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:477) at org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:80) at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:82) at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:170) at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.omnifaces.filter.FacesExceptionFilter.doFilter(FacesExceptionFilter.java:63) ... 32 more 第73行,因为facesContext.getViewRoot()返回null。它试图解决的值是在c:forEach中设置的ui:param。

这是完整的StackTrace:

<div id="header">
    <h:form>
        <h:commandButton action="page2" value="To page 2" />
    </h:form>
</div>
<div id="content">
    <c:forEach var="item" items="#{testBean.list}">
        Click the button!
        <h:dataTable />
    </c:forEach>
</div>

我试图用一个小例子(有和没有PrimeFaces)重现错误,但我无法重现NullPointerException。相反,当我在渲染过程中触发一个动作时,我得到一个ViewExpiredException。 (也许NullPointerException只是副作用/后效?)

以下是示例页面(page1.xhtml)的内容:

Calendar calendar = new GregorianCalendar();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

TestBean.getList()返回一个包含100000个字符串的List。 “单击按钮后”必须单击该按钮!出现并在渲染/页面加载完成之前。如果我用ui:repeat替换c:forEach,我会得到相同的错误(ViewExpiredException)。

我还试图在我的应用程序中删除导致NullPointerException的ui:param,但后来我收到一条错误,指出我的资源包无法加载。这支持了我的理论,即NullPointerException(或ui:param)不是错误的真正原因,而只是副作用/症状。

我使用Apache MyFaces的默认设置(即javax.faces.STATE_SAVING_METHOD:server,javax.faces.PARTIAL_STATE_SAVING:true),但当PARTIAL_STATE_SAVING设置为false时仍会出现错误。

如果需要任何其他信息,请询问,我会提供。

0 个答案:

没有答案