2013-02-27 4 views
1

GWT 응용 프로그램에서 JSON을 인코딩/디코딩하기 위해 Autobean 프레임 워크를 사용하고 있습니다. getter 및 setter가있는 인터페이스가있는 경우 작동합니다. 그러나 addToThisCollectionProperty 메서드를 대신 사용하여 setThisCollectionProperty을 지정하지 않고이 작업을 수행하는 다른 방법이 있습니까?setter 메서드가없는 GWT Autoban

예를 들어,이 같은 인터페이스 IPerson 있습니다

public interface BeanFactory extends AutoBeanFactory { 

    public AutoBean<IPerson> person(); 

    public AutoBean<IPerson> person(IPerson person); 


} 

및 IPerson에 구현 Person 클래스에

,

public class Person implements IPerson { 
     private String name; 
     private List<String> ids; 
     ... 

     public List<String> getIds() { 
       return ids; 
     } 

     public void addId(String id) { 
       ... 
       ids.add(id); 
     } 
} 

그것을 :

public interface IPerson { 
     public String getName(); 
     public void setName(String name); 

     public int getAge(); 
     public void setAge(int age); 

     public List<String> getIds(); 
     public void addId(String id); 
} 

의 BeanFactory는 다음과 같이이다 addId(String id)이로 바뀌면 작동합니다.. 은 그렇지 않으면 다음과 같은 오류가 표시됩니다 :

com.mycompany.jsonsample.beans.IPerson 매개 변수화가 간단하지 않다, 그러나 사람의 방법은

인코딩하는 것이 가능 대리자를 제공하지 않습니다/set 메서드없이 디코딩 하시겠습니까?

+0

나는 그것이 가능하지 않다고 생각합니다. 관습에 따라 Java는 setter와 getter를 리플렉션에 사용합니다. –

+0

@ChristianAchilli는 해당 함수로 처리 할 속성을 지정하여이를 수행 할 수있는 방법이 없습니까? –

+0

아니야. 사실 내가 왜 이걸하고 싶은지 잘 모르겠다. Person은 JSON 관점에서 DTO가되어야한다. 너 뭐하려고? –

답변

2

AutoBean은 모든 getter 및 setter와 getter 및 setter 만 관리합니다. 다른 방법으로는 category을 사용해야합니다.

범주를 사용하여, 따라서 getIds().add(…)addId(…)을 구현할 수, 또는 아마도 직접 AutoBeanis a wrapper 경우 the underlying objectaddIds를 호출합니다.

+0

감사합니다. 일했습니다. –

관련 문제