BlazeDS在序列化时使用反射将值注入到属性中。
BlazeDS对属性名称的转换遇到了一些问题,因为该名称以小写字母开头,后跟大写字母。
我有一个类似的ActionScript类:
package as.pkg {
[RemoteClass(alias="java.pkg.Example")]
public class Example {
private var mXRatio:Number;
public function get xRatio():Number {
return mXRatio;
}
public function set xRatio(r:Number):void {
mXRatio = r;
}
}
}
然后我在服务器上有一个等价的Java类:
package java.pkg;
public class Example {
private Double mXRatio;
public Double getXRatio() {
return mXRatio;
}
public void setXRatio( Double r ) {
mXRatio = r;
}
}
将实例从ActionScript发送到Java非常好。但是,当实例从Java发送到ActionScript时,会显示以下错误:
ReferenceError:错误#1056:无法在as.pkg上创建属性XRatio。例如.
为什么BlazeDS不在那里转换XRatio的X?我该如何避免这种情况?
因此,您的属性(公共getter/setter对或公共变量)必须具有完全相同的名称,否则将出现类似上面描述的序列化错误。
试试这个,它应该很好:
package as.pkg {
[RemoteClass(alias="java.pkg.Example")]
public class Example {
private var mXRatio:Number;
public function get XRatio():Number { //uppercase X i.s.o lowercase x
return mXRatio;
}
public function set XRatio(r:Number):void { //uppercase X i.s.o lowercase x
mXRatio = r;
}
}
}
干杯