重置JSF Backing Bean(视图或会话范围)

Ahm*_*DAL 10 jsf

我想在调用某个方法时通过JSF支持bean重置.假设有一个命令按钮,有人按下它,在成功完成事务后,我的View或Session范围JSF bean应该被重置.有没有办法做到这一点?

谢谢

Bal*_*usC 13

当您从action方法返回non null或non 时,将重新创建视图范围bean void,即使它将返回到同一视图.所以,只需String从action方法返回一个,即使它只是一个空字符串:

public String submit() {
    // ...

    return "";
}
Run Code Online (Sandbox Code Playgroud)

要使其完整,您可以考虑通过将?faces-redirect=true查询字符串附加到返回的结果来发送重定向.

public String submit() {
    // ...

    return "viewId?faces-redirect=true";
}
Run Code Online (Sandbox Code Playgroud)

对于您目前正在尝试实现的任何内容,会话范围的bean首先是错误的范围.有问题的bean应该是一个视图范围的bean.忽略这一点,您可以在action方法中重新创建模型,或者可能完全使会话无效(这也会破坏所有其他视图和会话范围的bean,但不确定这是否是您所追求的).


Ahm*_*DAL 13

我找到了View范围的解决方案.

    public static void removeViewScopedBean(String beanName) 
    {
      FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(beanName);
    }
Run Code Online (Sandbox Code Playgroud)

  • 这只是简单的笨拙,对于视图范围的bean来说应该不是必需的. (8认同)