3

GWT の Editor フレームワークを使用して編集している POJO 内に HashMap があります。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 メソッドを呼び出すにはどうすればよいでしょうか?

4

1 に答える 1

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>ます。これは、「このエディターはオブジェクトを取得し、 ProfileConfig1 つまたは複数のオブジェクトを抽出ProfileInfoして、1 つまたは複数のMyNewProfileInfoEditorエディターで編集します」としてこれを行うことができます。

于 2012-04-13T21:45:57.127 に答える