2013-02-27 37 views
1

我使用Autobean框架在我的GWT应用程序中编码/解码JSON。它适用于接口有getter和setter的情况。但有没有办法做到这一点,但没有指定setThisCollectionProperty而是使用addToThisCollectionProperty方法?GWT Autobean没有setter方法

例如,我有一个接口IPerson这样的:

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是这样的:

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

它如果将addId(String id)替换为,则适用。 否则示出了以下错误:

的com.mycompany.jsonsample.beans.IPerson参数并不简单,但人方法不提供委托

是否有可能以编码/解码没有set方法?

+0

我不认为这是可能的。按照惯例,java使用setters和getters来进行反射。 – 2013-02-27 11:16:44

+0

@ChristianAchilli没有办法通过指定要用该函数处理的属性来完成它吗? – 2013-02-27 11:21:00

+0

不是我所知道的。其实我不确定你为什么要这样做。 Person应该是JSON视角的DTO。你想做什么? – 2013-02-27 11:54:37

回答

2

AutoBean管理所有获取者和设置者,并且只管理获取者和设置者。对于任何其他方法,您必须使用category

使用类别,你可以这样实现addId(…)getIds().add(…),或者如果AutoBeanis a wrapper可能直接调用addIdsthe underlying object

+0

谢谢..工作 – 2013-03-01 06:49:35