Wicket ListView提供removeLink以添加ListItem。在ListView控件類的源removeLink方法的實現是:添加刪除鏈接到ListView - 如何從內部匿名類中引用外部匿名類
public final Link removeLink(final String id, final ListItem item)
{
return new Link(id)
{
private static final long serialVersionUID = 1L;
/**
* @see org.apache.wicket.markup.html.link.Link#onClick()
*/
public void onClick()
{
addStateChange(new Change()
{
private static final long serialVersionUID = 1L;
final int oldIndex = getList().indexOf(item.getModelObject());
final Object removedObject = item.getModelObject();
public void undo()
{
getList().add(oldIndex, removedObject);
}
});
item.modelChanging();
// Remove item and invalidate listView
getList().remove(item.getModelObject());
ListView.this.modelChanged();
ListView.this.removeAll();
}
};
}
現在,如果我一個鏈接添加到列表項和重寫的onClick()方法如上,並添加一些更多的功能吧,我怎麼能重新定義這個片段:
ListView.this.modelChanged();
ListView.this.removeAll();
作爲ListView的對象實例化是由ListView中的匿名類進行,相同的鏈接。
add(new ListView("listId", list) {
protected void populateItem(ListItem item) {
item.add(new Link("linkId") {
public void onClick() {
// how can I define
// ListView.this.modelChanged();
// ListView.this.removeAll();
// here?
}
});
}
});
這是如何從內部匿名類引用外部匿名類?從一般外部類的匿名內部類調用匿名外部類的方法(儘管它是內部的)?在Java中可能嗎?
你試過嗎?它編譯了嗎? – 2011-04-17 17:45:37
@Ravi Wallau不,它沒有編譯。 – 2011-04-17 17:51:45