1

我在使用 JSF 的 ELflash 时遇到了意外的行为。我有两个页面(page1 和 page2),每个页面都有自己的 managedVean(Bean1 和 Bean2)。在 page1 中,我有一个按钮可以从 Bean1 调用此方法:

ELFlash.getFlash().put("xxx", "Test");
    return "page2?faces-redirect=true";

在 page2 中,我在构造函数中有以下语句,用于从闪存中恢复值:

Map<String,Object> flash = ELFlash.getFlash();
    for(String s : flash.keySet()){
        if(s.equals("xxx")){
            myVariable=true;
        }
    }

当我单击 page1 中的按钮时,它会重定向到 page2 并将变量 myVariable 设置为 true。问题是,之后如果我更新页面,甚至在另一个选项卡中重新打开页面,它会继续输入 if 语句,将 myVariable 设置为 true。如果我查看控制台,我会看到来自 tomcat 的警告:

03/05/2013 08:57:56 com.sun.faces.context.flash.ELFlash setCookie AVISO: JSF1095: 在我们尝试为 flash 设置传出 cookie 时,响应已经提交。存储到闪存中的任何值在下一次请求时都将不可用。

据我了解,te flash 应该在请求结束后清理它的状态。还是我必须手动清洁?

4

0 回答 0