Jsf 当我们试图为flash设置传出cookie时,响应已经提交。存储到闪存的任何值都将不可用

Jsf 当我们试图为flash设置传出cookie时,响应已经提交。存储到闪存的任何值都将不可用,jsf,jsf-2.2,flash-scope,Jsf,Jsf 2.2,Flash Scope,我有一个视图范围的JSF托管bean。在这个托管bean中的操作侦听器方法中,我重定向到另一个页面,如下所示 public void register() { ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); Flash flash = context.getFlash(); flash.setKeepMessages(true); flash.put

我有一个视图范围的JSF托管bean。在这个托管bean中的
操作侦听器方法中,我重定向到另一个页面,如下所示

public void register() {
    ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
    Flash flash = context.getFlash();
    flash.setKeepMessages(true);
    flash.put("emailId", emailId);
    context.redirect(((HttpServletRequest) context.getRequest()).getContextPath()+"/page.jsf");
}
<ui:define name="metaData">
    <f:metadata>
        <f:viewAction action="#{requestScopedBean.init}"/>
    </f:metadata>
</ui:define>
page.jsf
绑定到一个请求范围的bean,我在其中接收存储在flash范围中的电子邮件地址,如下所示

public void register() {
    ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
    Flash flash = context.getFlash();
    flash.setKeepMessages(true);
    flash.put("emailId", emailId);
    context.redirect(((HttpServletRequest) context.getRequest()).getContextPath()+"/page.jsf");
}
<ui:define name="metaData">
    <f:metadata>
        <f:viewAction action="#{requestScopedBean.init}"/>
    </f:metadata>
</ui:define>
电子邮件地址在目标bean中不可用。目标bean中的电子邮件地址仅用于显示已注册的用户,以指示消息已发送到该地址,以便验证电子邮件地址

它在服务器终端上产生以下警告

警告:JSF1095:在我们启动时,响应已经提交 试图为flash设置传出cookie。存储到的任何值 下次请求时,闪存将不可用

为什么会发生这种情况?我的Mojarra版本是2.2.7