1

我阅读了许多关于 mojarra 的闪光灯范围问题的主题,直到现在,我无法完全摆脱这些烦人的

“在我们尝试为闪存设置传出 cookie 时,响应已经提交。存储到闪存的任何值在下一次请求时都将不可用。”

导致很多头痛的消息。

我阅读了诸如自定义 cookie 或请求参数之类的解决方法,但我感觉不太好,因为这种基本的东西在很长一段时间内都无法接受。

当前环境:
- mojarra 2.2.13
- omnifaces 1.12.1
- tomcat 8.0.32

有人可以确认,最新的 mojarra 仍然会发生这种情况吗?我以前的 mojarra 版本也有这些问题 - 有时它有效,有时无效。无论如何,该消息仅在登录后出现一次,但创建的 cookie“csfcfc”永远不会被删除,并且现在每个请求都会出现警告。

由于其他问题,目前无法切换到 myfaces。

我的简单案例,真的没什么特别的吗?:

@ManagedBean
public class LoginBean implements Serializeable {

 public String login(){

 String nextPage = null;
 //...
 if (dataOk){
     Messages.addFlashGlobalInfo("welcome");
     nextPage = "/user/dashboard?faces-redirect=true";
 }
 return nextPage;
   }
 }

@ViewScoped
public class DashboardBean implements Serializeable {

  @PostConstruct
  protected void init(){    
   //....
   initData();
  }
}

主模板.xhtml:

<h:body>
     <f:view>            
     <div class="content">              

         <h:panelGroup id="messages">
               <h:panelGroup  layout="block"  rendered="#{not empty facesContext.messageList}"> 
           <o:messages globalOnly="true" escape="false" infoClass="alert-success alert-dismissable" />
            </h:panelGroup>
         </h:panelGroup>

          <ui:insert name="content"/>       

     </div> 
   </f:view>
</h:body>

登录.xhtml

<h:commandButton action="#{LoginBean.login}" id="btn-login"    value="Login">
</h:commandButton>
4

0 回答 0