3

JSF アプリケーション内のすべてのマネージド Bean のリストを取得したいと考えています。Spring では、 context.getBeansOfType()のようなことができます。JSFに対応するメソッドはありますか?

@ManagedPropertyインターフェイスを実装する Bean がいくつかあります。コードをクリーンに保つために、各 Bean を明示的に呼び出すのではなく、これらのアダプターのリストを取得してそれらをループ処理したいと考えています。

ありがとうございました

4

2 に答える 2

5

パッケージ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 実装と密接に結合されており、他の実装では機能しません。

于 2013-03-19T15:03:27.823 に答える