【问题标题】:FacesMessage error rendering view [duplicate]FacesMessage错误渲染视图[重复]
【发布时间】:2011-12-08 10:56:05
【问题描述】:

我在启动(干净构建并运行)我的 JavaEE Web 应用程序时遇到了这个问题:

SEVERE: Error Rendering View[/TV/Admin3B/Monitoring/AjoutSpots.xhtml]
java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed
    at org.apache.catalina.connector.Request.doGetSession(Request.java:2880)
    at org.apache.catalina.connector.Request.getSession(Request.java:2577)
    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:418)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
    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:1539)
    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 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    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:662)

我用<p:growl /> 打印我的FacesMessage 当我删除它并重新加载页面并再次插入时,问题就解决了,但是当我重新启动应用程序时,这个错误又被抛出了。 我对此一无所知。

谢谢

穆尼尔

【问题讨论】:

标签: java maven-2 jsf-2 glassfish primefaces


【解决方案1】:

这是最新 Mojarra 版本之一中的一个已知错误。另见issue 2215。当响应大于默认响应缓冲区并因此导致响应提交时,将发生这种情况。但是,在此之后,当需要创建视图或会话范围的托管 bean 并且尚未创建会话时,会话创建将失败,因为响应已经提交。当要创建会话时,servletcontainer 即需要在响应标头上设置一个 cookie。当响应标头已经发送(提交)时,这不再可能。

在 Mojarra 人员修复它以便您可以升级之前,解决方法之一是在 Filter 的帮助下自己创建会话,该会话在 FacesServlet 完成其工作之前运行。

【讨论】:

  • 嗨,是的,这是一个问题,但我在客户端更改了状态保存方法,问题不再出现。 javax.faces.STATE_SAVING_METHODclient
  • 感谢 Balus 提供信息,希望 Mojarra 尽快修复此错误。
  • 仅供参考:自 Mojarra 2.1.8 以来,此问题已得到修复。
【解决方案2】:

我这样解决了: 在我的按钮(page.xhtml)的功能文件中,我写错了ManagedProperty:

@ManagedProperty(value="fileSessionBean") 
... rest code...

我将其更改为:

@ManagedProperty(value="#{fileSessionBean}") 
... rest code ...

现在工作正常,

【讨论】:

  • 它工作正常,谢谢!!!!
猜你喜欢
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 2013-08-08
  • 2016-09-18
  • 2018-08-02
  • 1970-01-01
相关资源
最近更新 更多