SwizConfig tag用于配置swiz,其格式如下
strict="true"
eventPackages="example.event"
mediateBubbledEvents="true"
viewPackages="example.view"
beanLoaders="{[Beans]}"
serviceCallFaultHandler="{genericFault}"
logEventLevel="{LogEventLevel.WARN}"
/>
strict和eventPackages 与如何处理事件类型相关。
strict标签的作用是定义哪种动态mediator。如果你设置为false,metadata标签将描述实际的
事件名称,使用这个模式,你可以定义你的mediators如下:
[Mediate(event="myFooEvent")]
public function doFoo():...
正如所见,你定义了一个由事件的名称作为中介,而不是任何一个常量。这个方法并不能让swiz去确认你所描述的事件名在应用系统中已存在。为了避免这个问题,你可以将strict属性设置成true。
当strict设置成true,在你的mediate metadata/annotation中所描述的事件将在runtime时检查。你必须在eventPackages 属性中设置event package包,多个事件包用逗号隔开。
根据上面的配置文件,strict被设置成true,而且eventPackages也存在,可以在一个方法上定义一个动态mediator:
[Mediate(event="FooEvent.FOO")]
public function doFoo():...
swiz首先查找类"example.event.FooEvent",因为配置文件中描述了"example.event"。如果能在example.event包里找到FooEvent类并且有事件名常量"FOO",swiz将进行绑定,否则抛出一个错误。
.如果你设置的mediateBubbledEvents为true,你可以从任一视图中抛出这个事件,swiz将抓住并唤醒所有相关的动态mediaor。其实质是swiz将监听所有的事件以确认任何一个mediate相应的事件类型。如果发现了一个,它将自动通过中心EventDispatcher重新抛出。这就意味着视图不必通过swiz派发事件,或者说与swiz的事件派发特征没有直接的耦合。这个视图可以使用内部dispatchEvent()方法派发标准事件。
.你可以定义"viewPackages "以优化性能。每次从view package创建一个视图。它将内省[Autowire]和[Mediate]元标签。你可以定义多个view packages,如下所示:
viewPackages="{['package1', 'package2']}"
注意:package1和package2仅仅是路径,不能写成"com.user.view.*"
.对于调用executeServiceCall()错误,你可以在main mxml中定义一个serviceCallFaultHandler方法用作统一错误处理。在上面的配置文件中,如果在你的服务调用过程中出现错误,swiz将运行genericFault()方法
.swiz使用内部Flex logging API,你也可以定义一个特殊的logEventLevel标识抓住哪一种级别的事件。默认为LogEventLevel.WARN.
参考文献:
1.
阅读(1101) | 评论(0) | 转发(0) |