0

2つのブールフィールドを持つUserオブジェクトがあります。

//User Bean
public class Users {
  private Boolean showContactData;
  private Boolean showContactDataToContacts;
  // Getters + Setters
}

これを、ApacheWicketを使用するUIのRadioChoiceとして表示したいと思います。

HTML部分からのスニペット:

<input type="radio" wicket:id="community_settings"/>

Wicketのラジオ付きJavaフォーム

public class UserForm extends Form<Users> {
  public UserForm(String id, Users user) { 
    super(id, new CompoundPropertyModel<Users>(user));
    RadioChoice rChoice = new RadioChoice<Long>("community_settings", choices, renderer);
    add(rChoice );
  }
}

私の問題は、もちろん、Usersオブジェクトに属性community_settingsがないことです。これらの2つのブール値をUIのラジオの選択にマップしたいだけです。

Wicketでそれを行うにはどうすればよいですか?

ありがとう!セバスチャン

4

1 に答える 1

3

データをマッピングするためのモデルが必要です。

RadioChoice<Long> rChoice = new RadioChoice<Long>("community_settings", new IModel<Long>() {
    public Long getObject() {
        if (user.getShowContactData() && user.getShowContactDataToContacts()) {
            return 1L;
        }
        // ...
    }

    public void setObject(Long choice) {
        if (choice == 1) {
            user.setShowContactData(true);
            user.setShowContactDataToContacts(true);
        } else if (choice == 2) {
            // ...
        }
    }

    public void detach() {
    }
}, choices);

ところで、個人的にはを使用するEnumので、特別なマッピングはまったくありません。あなたは少し「低レベル」なことをしているように見えるので、改札モデルのものは本当に面倒に感じるでしょう。必要に応じて、プリミティブ型の代わりにオブジェクトを使用してみてください。

于 2012-09-09T17:37:02.927 に答える