2013-10-06 16 views
0

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(); 

어떤 경우입니까?

건배.

+0

Flex 애플리케이션에서 Product 클래스의 인스턴스를 만드십니까? 그렇지 않으면; 컴파일러는 최종 SWF에서 해당 클래스를 "최적화"하여 서비스 결과가 사용자 정의 객체 클래스 대신 일반 Object 클래스로 바뀝니다. – JeffryHouser

+0

예, 할 수 있습니다. var myProduct : Product = Product (event.result); – zavr

답변

1

java 클래스의 경우 : 비공개 필드를 사용하고 getter를 구현하십시오.

package remoting; 
public class Product { 

    private String name; 
    private int id; 
    private Boolean isVisible; 

    public Product() { 
      name = "Product 0.1"; 
      id = 123; 
      isVisible = false; 
    } 
    public void setName(String _name){ 
      name = _name; 
    } 
    public String getName(){ 
      return name; 
    } 
    public void setId(int _id){ 
      id = _id; 
    } 
    public int getId(){ 
      return id; 
    } 
    public void setIsVisible(Boolean _isVisible){ 
      isVisible = _isVisible; 
    } 
    public Boolean getIsVisible() { 
      return isVisible; 
    } 
} 
+0

너 멋져! 고마워. 필자는 getters가 함수로서 특정 개인 변수를 반환하는 한 어떤 이름도 가질 수 있다고 가정합니다. – zavr

+0

나는 그렇게 생각하지 않는다. Java bean 규칙 –

+0

에 따라 이름을 지정해야하지만 getVisible이 어떻게 isVisible을 반환합니까? 그것은 얻을 수 없습니다 ... – zavr

0

또한 GraniteDS에 블레이즈 DS 전환 수 : 후자는 정말 시간 (문서 here 참조) 저장할 수있는 강력한 투명 외부화 메커니즘뿐만 아니라 코드 생성 도구가 있습니다.

+0

을 편집했지만 BlazeDS를 설치하는 데 오랜 시간을 보냈으며 마감일이 다가 왔습니다. D – zavr