当此名称以小写字母后跟大写字母开头时,我对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.Example上创建属性XRatio。
为什么BlazeDS不会转换XRatio的X?我怎么能避免这个?
答案 0 :(得分:1)
BlazeDS在序列化时使用反射将值注入属性。
因此,您的属性(公共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;
}
}
}
干杯