事件在Magnolia 5结构中占据了很重要的角色。当动作被执行时,无论代表的是用户还是系统,事件都会启动并分派给系统里的相关组件。

以下4种事件总线被用来在系统内分派事件。

  • 系统范围的事件通过系统事件总线分派,包括如注册应用描述符的事件。
  • AdminCentral范围内的事件只在单个用户的AdminCentral适用,包括如启动或停止应用的事件。
  • 应用范围的事件在单个应用内被检查,例如一个所有子应用都会处理的事件。
  • 子应用范围事件只在子应用内分派,包括如工作台(workbench)中选中的条目等。

如要获取事件总线,您可以使用一个叫做@Named的注释加上特定名字来注入(这些名字为systemadmincentralappsubapp)。这些事件总线由管理同一范围的组件提供者管理。因此,应用事件总线不能为AdminCentral组件提供者管理的对象所使用。然而,子组件提供者里的对象可以获得父组件提供者的对象。所以,子应用里的对象可以一直往上获得系统事件总线,并注册一个处理程序。

注入应用事件总线
@Inject
public HelloWorldApp(AppContext appContext, @Named("app") EventBus appEventBus) {
    this.appContext = appContext;
    this.appEventBus = appEventBus;
 
    appEventBus.addHandler(ContentChangedEvent.class, this);
}
  • No labels