Tomcat7 및 Flex에서 BlazeDS를 사용하고 있습니다. 클라이언트와 서버간에 사용자 지정 클래스를 사용하려고합니다. 로 :BlazeDS에서 RemoteObject를 바인딩 할 수 없습니다.
package
{
[Bindable]
[RemoteClass(alias="remoting.Product")]
public class Product
{
public var name:String;
public var id:int;
public var isVisible:Boolean;
}
}
자바에서 :
package remoting;
public class Product {
public String name;
public int id;
public Boolean isVisible;
public Product(){
name = "Product 0.1";
id = 123;
isVisible = false;
}
public void setName(String _name){
name = _name;
}
public void setId(int _id){
id = _id;
}
public void setVisible(Boolean _isVisible){
isVisible = _isVisible;
}
}
서비스 부분 :
public Product echo() {
Product product = new Product();
product.setId(123);
product.setName("My Product");
product.setVisible(true);
return product;
}
나는 성공적으로 RemoteObject에의 대상을 설정하고 에코() 메서드를 호출 할 수 있습니다. 결과 이벤트는 event.result의 Product 객체로 시작됩니다. 그러나, 그것은 합리적인 데이터를 포함하지 않습니다. AS 클래스의 변수는 null, 0 및 true 값으로 초기화됩니다. 나는 무엇이 문제인지 궁금해. Product에서 매개 변수가있는 String을 반환하려고 시도 했으므로 제대로 작동하므로 잘 설정됩니다. 매핑에 문제가 있습니다.
나는 다른 길을 갈 및 외부화를 구현하지만 난 예에서이 부분을 이해하지 못하는 수 : 문자열의 숫자가
name = (String)in.readObject();
properties = (Map)in.readObject();
price = in.readFloat();
어떤 경우입니까?
건배.
Flex 애플리케이션에서 Product 클래스의 인스턴스를 만드십니까? 그렇지 않으면; 컴파일러는 최종 SWF에서 해당 클래스를 "최적화"하여 서비스 결과가 사용자 정의 객체 클래스 대신 일반 Object 클래스로 바뀝니다. – JeffryHouser
예, 할 수 있습니다. var myProduct : Product = Product (event.result); – zavr