首页 > 解决方案 > JSF 2 - 升级到 Richfaces 4.5.17.Final 后的重新渲染问题

问题描述

将 Richfaces 从 4.2.2.Final 升级到 4.2.17.Final 后,a4j:commandLink 和 a4j:commandButton 无法正确呈现结果。
页面加载数据,只有在刷新页面后。

示例:a4j:commandLink 重新渲染两个不同的 a4j:outputPanel。

<a4j:commandLink actionListener="#{backingBean.loadStudentList}" value="Student List" onclick="jQuery('#sortSpinner').show();" oncomplete="jQuery('#sortSpinner').hide();" render="panel1,panel2"> </a4j:commandLink>

问题:单击链接时,会显示旋转图标。但是永远不会调用“onComplete”。只有在刷新页面时,图标才会隐藏并且页面会显示结果。glassfish5 日志中显示了一个异常,这意味着该错误处于渲染响应阶段。

异常: org.richfaces.resource.ResourceHandlerImpl.getRendererTypeForResourceName处的 java.lang.NullPointerException(ResourceHandlerImpl.java:299) 在 javax.faces.application.ResourceHandlerWrapper.getRendererTypeForResourceName(ResourceHandlerWrapper.java:218) 在 com.sun.faces.context.PartialViewContextImpl.renderComponentResources(PartialViewContextImpl.java:505) 在 com.sun.faces。 context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:337) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:252) at org.richfaces.context.ExtendedPartialViewContext.processPartial(ExtendedPartialViewContext.java:264) at javax.faces .component.UIViewRoot.encodeChildren(UIViewRoot.java:1124) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1905) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:465 ) 在 com.sun.faces。application.view.MultiViewHandler.renderView(MultiViewHandler.java:194) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:151) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:151) at com .sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:126) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl .java:223) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) 在 javax.faces 的 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 执行(RenderResponsePhase.java:126) .webapp.FacesServlet.service(FacesServlet.java:671)在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) 在 javax.faces 的 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 执行(RenderResponsePhase.java:126) .webapp.FacesServlet.service(FacesServlet.java:671)

根据迁移指南,包含所有相关的 jar。任何人都可以帮助解决这个问题吗?

标签: richfacesajax4jsf

解决方案


推荐阅读