faultDetail = "The expected argument types are (...)
参考文章:http://www.voidcn.com/article/p-vtvvlhrf-bqw.html ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The expected argument types are (...) but the supplied types were (..,flex.messaging.io.amf.ASObject) and converted to ... 今天我用flex把数据写入数据库时出现了以上错误,具体错误信息如下: body = (null) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 错误截图如下: --------------------------------------------------------------------------------------------------------------------------------------------------- 根据错误信息可知在as对象转为java对象时发生了错误,我的java vo类代码如下:
package bean; public class Admin { //对应数据库表tbAdmin int id; String usrName; String usrPass; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsrName() { return usrName; } public void setUsrName(String usrName) { this.usrName = usrName; } public String getUsrPass() { return usrPass; } public void setUsrPass(String usrPass) { this.usrPass = usrPass; } }------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 我的as vo类代码如下:
package vo { public class Admin { public var id:int; public var usrName:String; public var usrPass:String; public function Admin()//构造函数 { } } } ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 服务器端往数据库写入java vo类对象的代码如下:
@Override public int AddAdmin(Admin admin) { //添加管理员 String sql="insert into tbAdmin(id,usrName,usrPass)" + " values (0?,'1?','2?')"; sql=sql.replace("0?",String.valueOf(admin.getId())); sql=sql.replace("1?",admin.getUsrName()); sql=sql.replace("2?",admin.getUsrPass()); System.out.println(sql); return DbCRUD.Add(sql); } -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- flex端调用远程对象的代码如下:
//增加用户 import vo.Admin;//导入包 protected function btnAdd_clickHandler(event:MouseEvent):void { //创建对象 var admin:Admin=new Admin(); admin.id=int(txbId.text); admin.usrName=txbUsrName.text; admin.usrPass=txbUsrPass.text; roAdmin.AddAdmin(admin);//调用远程对象 } ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- flex往数据库写入数据的步骤大致就是这样了,不料我执行以上代码时却出现了文章开始所说的错误, 为什么会出错呢?原来我们在定义as类时没有将其和远程java vo类关联起来,解决方法: 像下面这样定义as类即可: package vo { [RemoteClass(alias="bean.Admin")] //这句不能少 public class Admin { public var id:int; public var usrName:String; public var usrPass:String; public function Admin()//构造函数 { } } } ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 注: [RemoteClass(alias="这里写远程java vo类的全路径")] ,如: [RemoteClass(alias="bean.Admin")]? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 您的十分满意是我追求的宗旨。 您的一点建议是我后续的动力。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |