以编程方式重新创建会话范围的JSF托管bean

时间:2015-06-08 10:17:08

标签: jsf jsf-2 managed-bean session-scope recreate

我使用的是Mojarra 2.1.29,并且有一个会话作用域的JSF托管bean

@ManagedBean
@SessionScoped
public class UserContext{

   //staff

}

和一个春豆:

public class UserReproducer{
    private User user;

    public void reporoduce(){
        if(user == null){
            //Here I need to recreate the userContext managed bean
            //do some other staff
        }
    }
}

实际上,我需要在JSF中使用某种自定义作用域,即在条件满足时从头开始重新创建userContext bean。有可能以某种方式做吗?通过重新创建,我的意思是在第一次创建时清除所有属性。

1 个答案:

答案 0 :(得分:-1)

使会话无效,以销毁会话范围的bean:

FacesContext.getCurrentInstance().getExternalContext().invalidateSession();

从Spring Security注销的另一个选项是清除上下文:

SecurityContextHolder.clearContext();