重置Viewscope的JSF Backing Bean

时间:2012-06-05 10:34:32

标签: jsf-2

我在viewscope中有一个托管bean我想重置使用此范围的表单。根据Baluc的帖子Reset JSF Backing Bean(View or Session Scope) 我在我的代码中做了同样的事情:

    public String reset(){
         FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove("myBean");
        return "SamePage?faces-redirect=true"; 

    }

但它不起作用。 有人可以告诉任何解决方案。

2 个答案:

答案 0 :(得分:4)

试试这个

public void reset(){

     FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove("myBean");

}

或者

public String reset(){

     return "SamePage"; 

}

答案 1 :(得分:0)

这个想法是,通过返回非空和非空的内容,您不需要调用FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove("myBean")。以下应该起作用(最终):

public String reset() {
    return "";
}

我说"最终"因为我不记得在渲染响应阶段之前或之后是否销毁了视图范围的bean。我怀疑这是为什么BalusC建议在返回值中添加?faces-redirect=true