首先,在FLEX开发过程中,给FLEX客户端设计一个VO(value object)类与JAVA中的实体类相对应,估计大家都做过,不过在作为参数传递到后台时,经常会出这样的错误提示
faultCode:Server.ResourceUnavailable faultString:'
Cannot invoke method 'merge'.' faultDetail:
'The expected argument types are (com.card.entity.Users)
but the supplied types were (flex.messaging.io.amf.ASObject)
and converted to (null).'
比如你是这么传递客户端的对象值
public function dodeletes(u:Users):void{
service.deletes(u);
}
服务器端呢,你肯定有对应的
public boolean deletes(Users persistentInstance) {
if (null != persistentInstance) {
getSession().delete(persistentInstance);
return true;
} else {
return false;
}
}
由于一个是FLEX客户端的VO,一个是JAVA类,所以要转换肯定需要一些设置,关键就是要在VO上加上一些元数据、
package vo
{
import mx.rpc.remoting.RemoteObject;
[Bindable]
[RemoteClass(alias="com.card.entity.Users")]
public class Users
{
public var id:int;
public var username:String;
public var email:String;
public var phonenum:String;
public var detail:String;
}
}
看见了没,
[RemoteClass(alias="com.card.entity.Users")]
这个起了关键作用,设置好了之后就不会出错了