我使用的是JSF-2.2,Primefaces-3.5和JDK-1.7。
我有一个注册页面,其中我有一个国家和城市的父子菜单关系,需要根据选定的父值动态加载。
目前我正在显示国家和州的名单!这就像一个魅力! :) How to display list of countries and cities in JSF
我的问题是,如果我们有n个用户访问该页面,我们正在创建在服务器上加载的n-Objects。我想减少负载和内存浪费
有没有办法加载数据并存储在应用程序的上下文中并在JSF中访问它们。
有用的参考资料:
答案 0 :(得分:1)
您可以从Balusc的answer @ApplicationScoped
创建bean,并且只使用此bean来读取代码列表。然后,您可以将bean注入其他bean中,或者直接从xhtml中调用它。
你也可以在init()中加载并保留在Map<String, List<String>>
的城市,其中key是country,value是cities。或者你可以懒惰地初始化城市:
Map<String, List<String>> map = new HashMap<>();
public synchronized List<String> getCities(String country) {
if (!map.containsKey(country)) {
List<String> cities = someService.getCities(country);
map.put(country, cities);
return cities;
}
return map.get(country);
}
但是,如果条目可能随着时间的推移而变化(例如,在DB中进行其他系统更新/删除)@SessionScoped
可能会更好,因为您不必记得重新加载应用程序/与@ApplicationScoped
一样重启服务器。