如何使 BlazeDS 名称转换适用于以小写字母开头、后跟大写字母的属性?

发布于 2024-11-13 11:04:27 字数 907 浏览 6 评论 0原文

当 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?我怎样才能避免这种情况?

I have some trouble with the conversion applied by BlazeDS to the name of the properties when this name begins with a lower-case letter followed by a capital letter.

I have an ActionScript class similar to this:

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

Then I have the equivalent Java class on the server:

package java.pkg;

public class Example {
    private Double mXRatio;

    public Double getXRatio() {
        return mXRatio;
    }

    public void setXRatio( Double r ) {
        mXRatio = r;
    }
}

Sending instances from ActionScript to Java works perfectly fine. But when the instances are sent from Java to ActionScript, the following error is displayed:

ReferenceError: Error #1056: Cannot create property XRatio on as.pkg.Example.

Why BlazeDS does not convert the X of XRatio there? How can I avoid this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独享拥抱 2024-11-20 11:04:27

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

干杯

BlazeDS uses reflection to inject values into your properties while serializing.

Therefore, your properties (public getter/setter pair or public variable) must have the exact same name or you will get serialization errors like the one you describe above.

Try this and it should be fine:

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

Cheers

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文