#apache-flex #actionscript-3 #blazeds #amf
#apache-flex #actionscript-3 #blazeds #amf
Вопрос:
У меня возникли некоторые проблемы с преобразованием, применяемым 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:
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;
}
}
}
Приветствия
Комментарии:
1. На самом деле это хорошо работает, если я использую
xratio
в ActionScript иgetXratio()
в Java, даже если это не совсем одно и то же имя. BlazeDS хорошо справляется со свойствами, начинающимися со строчной буквы в AS и с заглавной буквы в Java, что является классическим соглашением об именовании, но не в случае, описанном выше.