JSF アプリケーション内のすべてのマネージド Bean のリストを取得したいと考えています。Spring では、 context.getBeansOfType()のようなことができます。JSFに対応するメソッドはありますか?
@ManagedProperty
インターフェイスを実装する Bean がいくつかあります。コードをクリーンに保つために、各 Bean を明示的に呼び出すのではなく、これらのアダプターのリストを取得してそれらをループ処理したいと考えています。
ありがとうございました
JSF アプリケーション内のすべてのマネージド Bean のリストを取得したいと考えています。Spring では、 context.getBeansOfType()のようなことができます。JSFに対応するメソッドはありますか?
@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());
}
}
注:これは Mojarra JSF 実装と密接に結合されており、他の実装では機能しません。