我總是有問題,只需調用Component.replaceWith()。由於我正在使用AJAX做這件事,我總是需要調用一個target.add()。
我的解決辦法是對現在有一個類MyTree延伸LinkTree中和在該類覆蓋newNodeComponent()。
因爲在我的應用程序中發生的一切都發生在IndexPage.class上,在那裏我只是替換組件,我添加了一個方法handleSelection()到IndexPage.Class(擴展BasePage擴展網頁)。在那裏,我決定的基礎上,點擊nodeObject,如何在IndexPage
Public Class MyTree extends Linktree{
protected Component newNodeComponent(String id, IModel<Object> model) {
@Override
protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target) {
super.onNodeLinkClicked(node, tree, target);
((IndexPage)getPage()).handleSelection(target, (TreeNode)node);
}
@Override
protected ResourceReference getResourceFolderOpen(Object node) {
return getResourceForNode(node);
}
@Override
protected ResourceReference getResourceFolderClosed(Object node) {
return getResourceForNode(node);
}
@Override
protected ResourceReference getResourceItemLeaf(Object node) {
return super.getResourceItemLeaf(node);
}
@Override
protected ResourceReference getImageResourceReference(BaseTree tree, Object node) {
return getResourceForNode(node);
}
}
}
我希望這是propperly解釋更換部件,否則:問題或意見想要的!
嗯。節點選擇從哪裏來? –
對於到您撥打replaceWith行: 「更換部件必須具有相同的ID作爲組件將取代」 所以據我看到的,replaceWith函數應該在你的構造函數初始化新的標籤被稱爲上。 也正如我記得你調用替換後你必須做的:originalLabel = newLabel以及。 無論如何,我使用的檢票6.20,只是爲了確保,我們是在談論同樣的情況。 :) – BlondCode