Jsf 当我们试图为flash设置传出cookie时,响应已经提交。存储到闪存的任何值都将不可用
我有一个视图范围的JSF托管bean。在这个托管bean中的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
操作侦听器方法中,我重定向到另一个页面,如下所示
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