如何从GWT Editor类访问底层POJO

时间:2012-04-08 00:25:50

标签: gwt gwt-editors

我的POJO中有一个HashMap,我在GWT中使用Editor框架进行编辑。虽然我可以访问通过其getter / setter绑定的标准成员变量,但我不知道如何访问HashMap中的值。如何通过使用SimpleBeanEditorDriver的编辑器访问正在编辑的基础POJO?

我的POJO:

@Entity(noClassnameStored=true)
public class ProfileConfig extends BaseEntity {
     @Indexed(unique=true)
     private String name;
     private boolean isDefault;
     private HashMap<ProfileID, ProfileInfo> profiles= new HashMap<ProfileID, ProfileInfo>();

     public ProfileInfo getProfile(ProfileID id) {
          return profiles.get(id);
     }

     public void setProfile(ProfileID id, ProfileInfo p) {
         profiles.put(id, p);
     }

我的编辑:

public class ProfileConfigEditor extends Composite implements ManagedObjectEditor<ProfileConfig> {

     private static ProfileConfigEditorUiBinder uiBinder = GWT.create(ProfileConfigEditorUiBinder.class);
     interface ProfileConfigEditorUiBinder extends UiBinder<Widget, ProfileConfigEditor> {
}

     private UserManager userManager;

     @UiField
     CellList Profiles;
     @UiField
     TextBox name;
     @UiField
     CheckBox isDefault;

因为我有一个来自userManager的有效配置文件ID列表,如何从我的编辑器中调用POJO中的getProfile方法?

1 个答案:

答案 0 :(得分:2)

您需要的是ValueAwareEditor

public class ProfileConfigEditor extends Composite implements ManagedObjectEditor<ProfileConfig>, ValueAwareEditor<ProfileConfig> {

void setValue(ProfileConfig value){
    // TODO: Call ProfileConfig.getProfile()
}

void flush(){
   // TODO: Call ProfileConfig.setProfile()
}


// ... Other methods here

或者,如果您想要更多挑战,可以查看自己的CompositeEditor,例如,请参阅ListEditor的源代码。在您的情况下,您将实现CompositeEditor<ProfileConfig, ProfileInfo, MyNewProfileInfoEditor>。您可以将此作为“此编辑器将采用ProfileConfig对象,提取一个或多个ProfileInfo对象并使用一个或多个MyNewProfileInfoEditor编辑器进行编辑”