Обновление: я думаю, что я мог бы 1) добавить какой-то пустой компонент после ListView 2) при добавлении заменить его новым ListView и добавить еще один пустой после этого. Не уверен, что это возможно в Wicket.
Звучит правильно. Для простой части («кнопка Дополнительно») просто создайте новую Panel, которая содержит RepeatingView, пустой WebMarkupContainer и AjaxLink (добавьте немного логики, если разрешено разбиение по страницам / видимая ссылка).
Теперь для onClick AjaxLink замените ваш WebMarkupContainer той же панелью, которую вы используете, добавьте некоторую информацию о подкачке и скройте AjaxLink.
Я написал очень простой пример, чтобы проиллюстрировать возможный подход.
public class MoreRepeaterPanel extends Panel {
public MoreRepeaterPanel(String id, IModel<?> model) {
super(id, model);
}
@Override
protected void onInitialize() {
super.onInitialize();
List<String> stringList = Arrays.asList(new String[] { "0", "1" });
IDataProvider<String> idataProvider = new ListDataProvider(stringList);
DataView<String> dataView = new DataView<String>("dataView", idataProvider) {
@Override
protected void populateItem(Item<String> item) {
item.add(new Label("dataString", item.getModelObject()));
}
};
add(dataView);
final WebMarkupContainer moreContent = new WebMarkupContainer("moreContent", new Model<Serializable>());
moreContent.setOutputMarkupId(true);
add(moreContent);
AjaxLink<Void> moreLink = new AjaxLink<Void>("moreLink") {
@Override
public void onClick(AjaxRequestTarget target) {
WebMarkupContainer replaceMoreContent = new MoreRepeaterPanel(moreContent.getId(), new Model<Serializable>());
moreContent.replaceWith(replaceMoreContent);
this.setVisible(false);
target.add(replaceMoreContent, this);
}
};
moreLink.setOutputMarkupId(true);
add(moreLink);
}
}