これは私のコードです:
SortablePlayerDataProvider dp = new SortablePlayerDataProvider();
final DataView<Player> dataView = new DataView<Player>("rows", dp, 10) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(final Item<Player> listItem) {
final Player player = listItem.getModelObject();
listItem.setModel(new CompoundPropertyModel<Player>(player));
listItem.add(new Label("name", player.getName()));
listItem.add(new Label("surname", player.getSurname()));
listItem.add(new Label("club", player.getClub()));
}
};
およびプロバイダー:
public class SortablePlayerDataProvider extends SortableDataProvider<Player> {
private static final long serialVersionUID = 1L;
public SortablePlayerDataProvider() {
setSort("surname", SortOrder.ASCENDING);
}
@Override
public Iterator<Player> iterator(int first, int count) {
return tournamentService.getAllPlayer().subList(first, first + count).iterator();
}
@Override
public int size() {
return tournamentService.getAllPlayer().size();
}
@Override
public IModel<Player> model(final Player object) {
return new LoadableDetachableModel<Player>() {
private static final long serialVersionUID = 1L;
@Override
protected Player load() {
return object;
}
};
}
}
しかし、並べ替えは機能し、その理由はわかりません。なにが問題ですか ?それをデバッグする方法はいくつかありますか?
アップデート:
誰かが私に説明して、このdataProviderがアイテムをソートしている場所を示すことができますか?
私がそれを印刷するとき:
Iterator<Player> a = dp.iterator(0, dp.size());
for (Iterator<Player> iterator = a; iterator.hasNext();) {
System.out.println(iterator.next());
}
アイテムはまだソートされておらず、このプロバイダーの実装を探しているときに、このイテレーターがソートされている場所を見つけることができません。