使用parsley的DynamicCommand捕捉java端抛出的异常

 我用的是flex4+cairgorm3。

flex端需要捕捉java端抛出的异常,之前的做法是:

 

<fx:Declarations>

<rule:AddUserCommand/>

</fx:Declarations>

AddRuleCommand.as中,定义如下方法:

[CommandFault(selector="add")] 
public function error(fault:Fault):void
{ 
     if(fault.rootCause != null)
     { 
           Alert.show(fault.rootCause.message,"错误"); 
      }else{
           Alert.show(fault.faultString,"错误"); 
      }
 } 

 

 

Java端抛出异常:

 

throw new CollectUserException("添加用户时,名字不能为空");

可是这样,当java端抛出异常时,前端却毫无反应。这里我们要做出修改:

在Context里面用到parsley的DynamicCommnad标签:

 

 

 

<fx:Declarations>

  <DynamicCommand type="{AddUserCommand}" selector="add"/>

</fx:Declarations>

 

AddRuleCommand.as改为:

 

 

 

public function error(fault:Fault):void

{

              if(fault.rootCause != null && fault.rootCause.message != undefined)

              {

                    Alert.show(fault.rootCause.message,"错误");

              }else{

                    Alert.show(fault.faultString,"错误");

              }

}  

这里注意:去掉了[CommandFault(selector="add")],因为我们已经在DynamicCommand里面定义了。这样就能够显示异常弹出框了。

 

--------------------------------------------------------------------

DynamicCommand:

 

 

对于Command层,方法至少有三个:execute,resultfault,代码如下:

public class SaveUserCommand {
    [Inject]
    public var service:RemoteObject;

    public function execute (event:UserEvent) : AsyncToken {
        return service.saveUser(event.user);
    }

    public function result (user:User) : void {
        // do something with the result
    }
   
    public function error (fault:Fault) : void {
        // do something with the result
    }
   
}

 

我们一般用一个完整的命令对象对结果进行处理。这个对象仅是单个方法,用于执行命令。
parsley
为每个匹配消息创建一个新的命令实例。多个命令对象可以并发执行,并且不进行任何交互。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值