0

私は wicket の RadioGroup がまったく混乱していることに気づきました。フィールド「booleanvalue」を設定したいリピーターに n 個のエンティティを取得しました。これは私のコードです:

RadioGroup radioGroup = new RadioGroup<>("someGroup", new Model(entityXYZ));
radioValue = new Radio("radioValue", 
    new PropertyModel(entityXYZ, "booleanValue"), radioGroup);
repeaterContainer.add(radioValue);
// add other stuff to repeater

私が見つけたすべての例は当てはまらないようです。radioGroup に単一のエンティティは必要ありませんが、そのうちの 1 つだけにフィールドを設定できるようにしたいと考えています。あらゆる種類のモデルの組み合わせを試しましたが、どれも機能しませんでした。

更新: コンポーネント階層に問題があるようです。radioValues を同じ階層に追加することはできません。これは、リピーター内でカスタム ユーザー入力が他の RadioGroups と同様に追加される可能性があるためです。さらに、グループは単一のオブジェクトではなく、1 つのみにブール値を設定する複数のオブジェクトで構成されます。HTML ではこれは問題ありませんが、Wicket でこれを解決する方法がわかりません :(

4

2 に答える 2

0

一連のエンティティのプロパティを更新しますか?

RadioGroup<Entity> group = new RadioGroup<Entity>("someGroup", new IModel<Entity>() {
  public void setObject(Entity entity) {
    for (Entity candidate : entities) {
      candidate.setBooleanValue(candidate == entity);
    }
  }
  public Entity getObject() {
    for (Entity candidate : entities) {
      if (candidate.getBooleanValue()) {
        return candidate;
      }
    }
    return null;
  }
});

group.add(new ListView("entities", entities) {
  protected void populateItem(final ListItem<Entity> item)
    item.add(new Radio("radio", item.getModel());
  }
});
于 2013-08-11T18:11:19.723 に答える