JSF错误 – IllegalStateException:PWC3999:在提交响应后无法创建会话

我是JSF的新手,我正在构建一个使用facelets创建的应用程序。
这是我的模板
master.xhtml

 
Welcome!  Searcher   |   [ Change Password ] [ ]

现在下面的文件是我在master.xhtml中包含的组合文件ie

MasterSearch.xhtml

   

MasterSearch.java这是一个bean

 public class MasterSearch { long serviceNumber; String rank; String fullName; String CNICNumber; String phoneNumber; String emailAddress; public long getServiceNumber() { return serviceNumber; } public void setServiceNumber(long serviceNumber) { this.serviceNumber = serviceNumber; } public String getRank() { return rank; } public void setRank(String rank) { this.rank = rank; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public String getCNICNumber() { return CNICNumber; } public void setCNICNumber(String cNICNumber) { CNICNumber = cNICNumber; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } public String findPerson(){ return "personfound"; } } 

faces-config.xml中

     org.springframework.web.jsf.el.SpringBeanFacesELResolver    masterSearch  MasterSearch  request   masterResult  com.delta.resultbeans.MasterSearchResult  request   Navigation from the MasterSearch /WebPages/SearchPages/MasterSearch.xhtml  personfound /WebPages/SearchPages/found.jsp   personnotfound /notfound.jsp    

现在,当我运行此代码(实际上是masterp.xhtml)时,它显示完美的输出并加载准确但它在控制台中引发exception,即

 SEVERE: Error Rendering View[/WebPages/MasterPage/master.xhtml] java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2885) at org.apache.catalina.connector.Request.getSession(Request.java:2582) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:155) at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:175) at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:166) at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:419) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 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.StandardWrapper.service(StandardWrapper.java:1542) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) INFO: Exception when handling error trying to reset the response. java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2885) at org.apache.catalina.connector.Request.getSession(Request.java:2582) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:155) at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:175) at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:166) at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:419) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 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.StandardWrapper.service(StandardWrapper.java:1542) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2885) at org.apache.catalina.connector.Request.getSession(Request.java:2582) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:155) at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:175) at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:166) at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:419) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 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.StandardWrapper.service(StandardWrapper.java:1542) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) 

而且我认为由于这个原因,我的按钮没有提交动作

出现在MasterSearch.xhtml 。我在SO上发现人们有这个问题但我无法找到并理解一个好的解决方案。
请帮助谢谢

这是Mojarra的一个已知错误。 据报道,问题是2215和2277 ,自Mojarra 2.1.8以来已经修复。 因此,如果您升级到至少2.1.8,那么此问题应该消失。

这个问题的原因可以解释如下:Mojarra试图尽可能地推迟会话创建。 该会话应仅在真正需要时创建。 其中,当需要写入的JSF视图状态时,通常在渲染结束时发生 。 但是,在2KB的书面HTML 之后出现结束相对较大的页面上,创建会话为时已晚。 要创建会话,服务器即需要设置cookie。 但是,要设置cookie,不应该提交响应(cookie需要进入响应头)。 默认情况下,服务器配置为刷新每2KB书面HTML的响应。

如上所述,自Mojarra 2.1.8以来,这个问题已得到解决。 您可以在此处下载最新版本。