apacheflex-如何使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?我该如何避免这种情况?

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;
        }
    }
}

干杯

相关内容

  • 没有找到相关文章

最新更新