我想要獲取JSF應用程序中所有託管bean的列表。在春天,我可以做點像context.getBeansOfType()。 JSF中有相應的方法嗎?在運行時獲取JSF中所有託管Bean的列表
我有一些@ManagedProperty
bean實現了一個接口。我希望得到這些適配器的列表並循環遍歷它們,而不是明確調用每個bean以保持代碼清潔。
謝謝
我想要獲取JSF應用程序中所有託管bean的列表。在春天,我可以做點像context.getBeansOfType()。 JSF中有相應的方法嗎?在運行時獲取JSF中所有託管Bean的列表
我有一些@ManagedProperty
bean實現了一個接口。我希望得到這些適配器的列表並循環遍歷它們,而不是明確調用每個bean以保持代碼清潔。
謝謝
您可以BeanManager
類從com.sun.faces.mgbean
包做到這一點:
ApplicationAssociate application = ApplicationAssociate.getInstance(FacesContext.getCurrentInstance().getExternalContext());
BeanManager beanManager = application.getBeanManager();
Map<String, BeanBuilder> beanMap = beanManager.getRegisteredBeans();
Set<Entry<String, BeanBuilder>>beanEntries = beanMap.entrySet();
for (Entry<String, BeanBuilder> bean: beanEntries) {
String beanName = bean.getKey();
if (beanManager.isManaged(beanName)) {
BeanBuilder builder = bean.getValue();
System.out.println("Bean name: " + beanName);
System.out.println("Bean class: " + builder.getBeanClass());
System.out.println("Bean scope: " + builder.getScope());
}
}
注:這是緊密結合鑽嘴魚科JSF實現和其他實現不起作用。
這是什麼動機,或者只是好奇心? – 2013-03-19 14:38:25
@LuiggiMendoza我會更新這個問題來澄清 – dev 2013-03-19 15:02:25