Jsf ApplicationScoped Bean eager=true在切换到不同视图时销毁

Jsf ApplicationScoped Bean eager=true在切换到不同视图时销毁,jsf,primefaces,Jsf,Primefaces,JSF2,Primefaces 3.3.FINAL,Spring 我有应用程序处理的Bean,用于在服务器启动期间加载所有下拉数据。我通过ManagedProperty注释引用了相同的bean。但是当切换视图时,bean会被破坏,我需要重新创建bean和数据 示例代码: @ManagedBean(name = "refDataBean", eager = true) @ApplicationScoped public class RefDataBean extends AbsB

JSF2,Primefaces 3.3.FINAL,Spring

我有应用程序处理的Bean,用于在服务器启动期间加载所有下拉数据。我通过ManagedProperty注释引用了相同的bean。但是当切换视图时,bean会被破坏,我需要重新创建bean和数据

示例代码:

   @ManagedBean(name = "refDataBean", eager = true)
   @ApplicationScoped
   public class RefDataBean extends AbsBackingBean implements Serializable{
   ....
     @PostConstruct
     public void init(){
     //load multiple drop down data - populateData-db call
     }
   }


   @ManagedBean(name = "searchViewBean")
   @ViewScoped
   public class SearchViewBean{

   @ManagedProperty(value = "#{refDataBean}")
   private RefDataBean        refDataBean;
    @PostConstruct
    public void init() { //getUser object }

   public User retrieveUser(User user) {
           List<User> userList = refDataBean.getUserList();
   }

   public PICTSRefDataBean getPictsRefDataBean() {
      return pictsRefDataBean;
   }

   public void setPictsRefDataBean(final PICTSRefDataBean pictsRefDataBean)      
   {     this.pictsRefDataBean = pictsRefDataBean;  }

   } 
@ManagedBean(name=“refDataBean”,eager=true)
@适用范围
公共类RefDataBean扩展AbsBackingBean实现可序列化{
....
@施工后
公共void init(){
//加载多个下拉数据-填充数据db调用
}
}
@ManagedBean(name=“searchViewBean”)
@视域
公共类SearchViewBean{
@ManagedProperty(value=“#{refDataBean}”)
私有RefDataBean RefDataBean;
@施工后
public void init(){//getUser object}
公共用户检索用户(用户用户){
List userList=refDataBean.getUserList();
}
公共PICTSRefDataBean getPictsRefDataBean(){
返回pictsRefDataBean;
}
public void setPictsRefDataBean(最终PICTSRefDataBean PICTSRefDataBean)
{this.pictsRefDataBean=pictsRefDataBean;}
} 
在一个页面/视图中,user.xhtml

<h:selectOneMenu  value="#{searchViewBean.selectedUser}" >
    <f:selectItems value="#{refDataBean.userList}" var="taskUser"
            itemLabel="#{taskUser.fullNameAndId}"
            itemValue="#{taskUser.networkLogin}"></f:selectItems>              
</h:selectOneMenu>


当切换到另一个页面team.xhtml时,refDataBean为null,它将转到refDataBean的PostConstruct方法,再次构建整个下拉列表。由于它是一个静态数据,我希望加载它一次,并且应该能够在任何页面中访问它。我知道当您切换到其他视图时,视图范围中的对象将被销毁。如何限制这一点?或者我错过了什么?请帮助

避免出现明显的问题,您从哪个包导入了
@ApplicationScoped
。他指的是导入,例如
import javax.faces.bean.ApplicationScoped所有bean驻留在同一个包中。我们有几个ViewScoped Bean,ViewScoped Bean指的是应用程序范围的Bean来提取数据。真正的问题是在访问另一个xhtml后,refDataBean被初始化并转到@PostConstruct,然后重新构建您在这里显示的Bean,您如何导航到另一个页面?