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

Re-create session scoped JSF managed bean programmatically

我正在使用 Mojarra 2.1.29 并且有一个会话范围的 JSF 托管 bean

@ManagedBean
@SessionScoped
public class UserContext{

   //staff

}

和一个spring豆子:

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。有可能以某种方式做吗?通过重新创建,我的意思是清理它的所有属性,因为它是第一次创建的。

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

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

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

SecurityContextHolder.clearContext();