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