ListView removeLink method should remove items from list based on item index
----------------------------------------------------------------------------
Key: WICKET-2909
URL: https://issues.apache.org/jira/browse/WICKET-2909
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.4.9
Reporter: Clint Checketts
Priority: Minor
In org.apache.wicket.markup.html.list.ListView the removeLink() method removes
and object from the underlying list using the modelObject. instead it should
remove using the item.getIndex().
Reason: if the listview's model contains several nulls, and the clicked item's
object is null then the first null would get removed instead of the entry at
the item that was actually clicked.
Instead of: 'final int oldIndex = getList().indexOf(item.getModelObject());'
use the passed in item.getIndex()
Example:
public void onClick()
{
addStateChange(new Change()
{
private static final long
serialVersionUID = 1L;
final int oldIndex = item.getIndex());
<- Change here ///////////////////////////////
final T removedObject =
item.getModelObject();
@Override
public void undo()
{
((List<T>)getList()).add(oldIndex, removedObject);
}
});
item.modelChanging();
// Remove item and invalidate listView
getList().remove(oldIndex); <- Change here
///////////////////////////////
ListView.this.modelChanged();
ListView.this.removeAll();
}
I spoke with Jeremy Thomerson about this. Please assign to him. The moveUpLink
and MoveDownLink are similarly affected.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.