事件在Magnolia 5结构中占据了很重要的角色。当动作被执行时,无论代表的是用户还是系统,事件都会启动并分派给系统里的相关组件。
以下4种事件总线被用来在系统内分派事件。
- 系统范围的事件通过系统事件总线分派,包括如注册应用描述符的事件。
- AdminCentral范围内的事件只在单个用户的AdminCentral适用,包括如启动或停止应用的事件。
- 应用范围的事件在单个应用内被检查,例如一个所有子应用都会处理的事件。
- 子应用范围事件只在子应用内分派,包括如工作台(workbench)中选中的条目等。
如要获取事件总线,您可以使用一个叫做@Named
的注释加上特定名字来注入(这些名字为system
, admincentral
, app和
subapp)。这些
事件总线由管理同一范围的组件提供者管理。因此,应用事件总线不能为AdminCentral组件提供者管理的对象所使用。然而,子组件提供者里的对象可以获得父组件提供者的对象。所以,子应用里的对象可以一直往上获得系统事件总线,并注册一个处理程序。
注入应用事件总线
@Inject public HelloWorldApp(AppContext appContext, @Named("app") EventBus appEventBus) { this.appContext = appContext; this.appEventBus = appEventBus; appEventBus.addHandler(ContentChangedEvent.class, this); }
Overview
Content Tools