Seam - 列出所有组件

时间:2010-05-15 03:16:21

标签: java seam

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

@Observer( “org.jboss.seam.postCreate。”)

你只能观察那些事件而不是*,因为它被放入一个字符串中的地图。

有什么想法吗?

沃尔特

1 个答案:

答案 0 :(得分:3)

如上所述

  

我想获得所有组件的列表

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

  • < COMPONENT_NAME> .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());