我正在集成 SWF 2.2.1、Primefaces 2.2.1、JSF 2、Spring Security 3、Spring 3.1.0M1。 我能够访问 Spring web-flow xml 中提到的第一页,但出现以下错误。
com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/WEB-INF/flows/AccSrch/searchAccIns.xhtml]
java.lang.UnsupportedOperationException
at javax.faces.context.FacesContext.isReleased(FacesContext.java:609)
at com.sun.faces.context.PartialViewContextImpl.updateFacesContext(PartialViewContextImpl.java:468)
at com.sun.faces.context.PartialViewContextImpl.isAjaxRequest(PartialViewContextImpl.java:108)
at javax.faces.context.PartialViewContextWrapper.isAjaxRequest(PartialViewContextWrapper.java:117)
at javax.faces.component.UIViewRoot.getRendersChildren(UIViewRoot.java:1020)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at org.springframework.faces.webflow.FlowViewHandler.renderView(FlowViewHandler.java:99)
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 org.springframework.faces.webflow.FlowLifecycle.render(FlowLifecycle.java:80)
at org.springframework.faces.webflow.JsfView.render(JsfView.java:90)
令我惊讶的是,我的 .xhtml 中只有最少的代码
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<ui:define name="content">
<f:view>
<h:form id="expire" prependId="false">
<h:outputText value="HEllo" />
</h:form>
</f:view>
</ui:define>
</ui:composition>
请参阅这篇文章了解上下文 link
最佳答案
一些事实:
- 根据 your other question 中堆栈跟踪中 Tomcat 特定类的外观你正在使用 Tomcat。
- 根据JSF 2.1的外观介绍
FacesContext#isReleased()
在您当前问题的堆栈跟踪中的方法,您使用的是 JSF 2.1。 - 根据 the answer在您的另一个问题中,您可能使用的是 Mojarra 2.1.0。
- Mojarra 2.1.0 does not work由于 major mistake 在 Tomcat/Jetty 中在未随附内置注释扫描器的容器的注释扫描实现中意外引入 Glassfish 特定代码。
因此,要解决这个问题,有几种选择:
- 降级到 Mojarra 2.0.5。
- 升级到 Mojarra 2.1.1。
- 用 Glassfish 3、JBoss AS 6 或其他软件替换 Tomcat。
关于java.lang.UnsupportedOperationException 在 javax.faces.context.FacesContext.isReleased(FacesContext.java :609),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177179/