1

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

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

    }

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

4

2 回答 2

4

尝试这个

public void reset(){

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

}

或这个

public String reset(){

     return "SamePage"; 

}
于 2012-07-25T20:40:15.673 回答
0

这个想法是,通过返回非 null 和非 void 的东西,你不需要调用FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove("myBean"). 以下应该工作(最终):

public String reset() {
    return "";
}

我说“最终”是因为我不记得视图范围的 bean 是在渲染响应阶段之前还是之后被销毁的。我怀疑这就是为什么 BalusC 建议增加?faces-redirect=true返回值的原因。

于 2012-06-05T18:49:57.640 回答