接缝会起火 不同类型的事件 与特定范围、任务或流程相关,并将范围、任务或流程的名称附加到事件末尾。

如何监听某个类型的所有事件?

例如。对于任何 <name> 我想听听诸如此类的事件:

  • org.jboss.seam.createProcess.<name> ——进程创建时调用
  • org.jboss.seam.endProcess.<name> — 进程结束时调用
  • org.jboss.seam.initProcess.<name> — 当进程与对话关联时调用
  • org.jboss.seam.startTask.<name> — 任务开始时调用
  • org.jboss.seam.endTask.<name> — 任务结束时调用

我需要这样做 尽管不知道有效名称列表 前面...:-(

我希望使用 @Observer 来创建观察者或类似的东西,并且我将在同一组件中监听最多两个事件类。

有帮助吗?

解决方案

您可以通过用您自己的实现替换 Seam 的 Events 类来轻松地做到这一点。然后查找以特定字符串开头引发的事件:

@Scope(ScopeType.STATELESS)
@BypassInterceptors
@Name("org.jboss.seam.core.events")
@Install(precedence=APPLICATION)
public class Events extends org.jboss.seam.core.Events
{
   @Override
   public void raiseEvent(String type, Object... parameters )
   {
       super.raiseEvent( type, parameters );

       if ( type.startsWith( "org.jboss.seam.createProcess" ) )
       {
           super.raiseEvent( "org.jboss.seam.createProcess", parameters );
       }
       //etc.
   }
}

您现在可以观察“org.jboss.seam.createProcess”来获取所有createProcess 事件。

其他提示

在 if 内部,您必须编写 super.raiseEvent(...) 否则您将得到无限循环。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top