我的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方法?
答案 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
编辑器进行编辑”