Как сделать так, чтобы преобразование имен BlazeDS работало для свойств, начинающихся с буквы в нижнем регистре, за которой следует буква в верхнем регистре? - PullRequest
2 голосов
/ 06 июня 2011

У меня возникли проблемы с преобразованием, примененным 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: невозможно создать свойство XRatio для as.pkg.Example.

Почему BlazeDS там не конвертирует X из XRatio? Как я могу избежать этого?

1 Ответ

1 голос
/ 06 июня 2011

BlazeDS использует отражение, чтобы ввести значения в ваши свойства при сериализации.

Следовательно, ваши свойства (общедоступная пара геттер / сеттер или открытая переменная) должны иметь точно такое же имя, иначе вы получите ошибки сериализации, подобные описанным выше.

Попробуйте это, и все должно быть в порядке:

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

Приветствия

...