Seam – 列出所有组件

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

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

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

有任何想法吗?

沃尔特

如上所述

我想获得所有组件的列表

对于声明为组件的每个类 ,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());