最正规的Restful HTTPService处理办法是看HTTP response的头部的
状态代码。比如200表示OK,500表示内部服务器错误,404表示找不到对应文件等等。但是Flex的HTTPService并没有提供任何可以读取HTTP response头部的办法,所以,这种正规的办法在目前是行不通的。某人直接就说:Flex can't do REST
当然这样的说法比较极端,因为实际工作中总可以有一些Work around,通过其他途径来解决问题。
因为Flex没有办法读取状态代码,所以在Rails的实现中,默认所有的Action的返回结果都是200(OK)。然后,所有的错误信息,通过 render :xml => @account.errors.to_xml ,作为结果返回。
比如:
进一步把错误在Flex中显示出来,可以参考: http://onrails.org/articles/2007/03/06/mapping-rails-errors-to-flex-fields
当然这样的说法比较极端,因为实际工作中总可以有一些Work around,通过其他途径来解决问题。
因为Flex没有办法读取状态代码,所以在Rails的实现中,默认所有的Action的返回结果都是200(OK)。然后,所有的错误信息,通过 render :xml => @account.errors.to_xml ,作为结果返回。
比如:
xml 代码
<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Name 账户名称不能为空</error> </errors>
然后,在结果返回函数里面处理。
js 代码
//just prototype code public function onResult(evt:ResultEvent):void { if (evt.result.hasOwnProperty("errors")) { //error handling } else { // get right result } }
进一步把错误在Flex中显示出来,可以参考: http://onrails.org/articles/2007/03/06/mapping-rails-errors-to-flex-fields