Wicket の ListView が提供する itarator メソッドは、以下のような使い方もできる。
無理やり、イテレータを Stream に変換して処理してみた。
final WebMarkupContainer listViewContainer = new WebMarkupContainer("listview_container"); listViewContainer.setOutputMarkupId(true); queue(listViewContainer); queue(new ListView<ReservDevice>("listview", new PropertyModel<List<Foo>>(this, "fooList")){ @Override protected void populateItem(final ListItem<ReservDevice> item){ item.add(new TextField<String>("user_name", new Model<>()); item.add(new AjaxButton("check"){ restuructFunction(); target.add(listViewContainer) }): } // リストイテレータで処理する private void restuructFunction(){ // リストをクリアして入れ直す。 fooList.clear(); StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator(), Spliterator.ORDERED), false).forEach(i->{ Foo f = new Foo(); f.userName = ((TextField<String>)i.get("user_name")).getModelObject(); fooList.add(f); }); } });