【问题标题】:Seam - list all componentsSeam - 列出所有组件
【发布时间】:2010-05-15 03:16:20
【问题描述】:

我想获取所有组件的列表,以便进一步处理它们。这可能吗,如果可以,我该怎么做?我不相信我可以观察到所有 postCreate 事件,因为它只是一个完全匹配而不是正则表达式。

@Observer("org.jboss.seam.postCreate.")

您只能观察这些事件而不是 *,因为它被放入一个键为字符串的映射中。

有什么想法吗?

沃尔特

【问题讨论】:

  • 我认为你搞错了。您要进行什么样的处理?也许有一种对 DI 更友好的方式来做到这一点。

标签: java seam


【解决方案1】:

如前所述

我想获取所有组件的列表

对于每个声明为组件的类,Seam 创建一个组件定义并 将其隐藏在应用程序范围内。它的命名约定遵循模式

  • .component

所以你可以使用

/**
  * Metamodel class for component classes
  *
  * Similar to org.springframework.beans.factory.config.BeanDefinition used by Spring
  */ 
org.jboss.seam.Component

Context context = Contexts.getApplicationContext();
for (String name: context.getNames()) {
    Object object = context.get(name);
    if(object instanceof org.jboss.seam.Component) {
        Component component = (Component) object;

        System.out.println(component.getName());
        System.out.println(component.getType());
        System.out.println(component.getScope());
        System.out.println(component.getTimeout());
        System.out.println(component.isStartup());
        System.out.println(component.isSynchronize());
    }
}

如果要检索所需的组件,可以使用

Object object = Component.getInstance(component.getName());

【讨论】:

  • 谢谢 - 我在 API 中没有看到,这正是我需要的。
猜你喜欢
  • 2013-05-08
  • 1970-01-01
  • 2018-11-14
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 2011-07-18
相关资源
最近更新 更多