Flash 范围警告和 Flash 在重定向后不删除

Flash scope warning and Flash not delete after redirect

我正在尝试使用 JSF 和 Primefaces 在 View1 和 View2 之间重定向时传递对象。

我正在使用 JSF Flash 范围这样做,对象确实传递​​给第二个视图,但我仍然收到此警告:

com.sun.faces.context.flash.ELFlash setCookie

WARNING: JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash. Any values stored to the flash will not be available on the next request.

并且 flash cookie 没有被删除,即使再进行几次重定向也是如此。

View1.xhtml

<ui:composition xmlns=...... template="../../../BaseTemplate.xhtml">
    <ui:define name="templateContent">
        <mm:MyComponent />
    </ui:define>
</ui:composition>

MyComponent.xhtml

<html xmlns= ......>

<composite:interface componentType="usersListComponent">
</composite:interface>

<composite:implementation>

<h:form>
    <p:commandButton action="#{cc.passObject}" value="passMyObject" />  
</h:form>

</composite:implementation>
</html>

MyComponent.java

@FacesComponent("myComponent")
public class MyComponent extends UIComponentBase {
        
    private MyObject objectToPass;  
    public String passObject() {
        ExternalContext externalContext= FacesContext.getCurrentInstance().getExternalContext();
        externalContext.getFlash().put("objectToPass", objectToPass);
        return "View2";
    }
}

View2Controller.java

@ManagedBean
@ViewScoped
public class View2Controller implements Serializable {
    @PostConstruct
    public void init() {
        MyObject ob = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("objectToPass");
        ......Do Something with MyObject
    }
}

已解决!!!!!!

我不确定 this 是不是最好的方法,但它对我有用..

问题出在 http 缓冲区大小和 jsf 生命周期中,cookie 是在响应写入后写入的,缓冲区太小无法容纳它们。

我不确定 this 是不是最好的方法,但它对我有用..

问题出在 http 缓冲区大小和 jsf 生命周期中,cookie 是在写入响应之后写入的,缓冲区太小无法容纳它们。