Primefaces树:拖放后不要删除节点

3

拖动节点后,是否有可能不从原始PrimeFacesTree中删除该节点? 默认情况下,已经被拖放到其他位置的节点将被删除。 我能否阻止这种情况发生?

我正在使用Primefaces 4.0

1个回答

1

没有预设的属性可以在dropEvent上复制节点。

解决方法是向您的<p:tree>元素添加监听器:

<p:tree listener="#{managingBean.onDragDrop}" />

那么您需要通过在后端方法中复制节点来重新创建初始位置的节点:

public void onDragDrop(TreeDragDropEvent event) {
    TreeNode dragNode = event.getDragNode();
    TreeNode dropNode = event.getDropNode();
    int dropIndex = event.getDropIndex();

    // Logic to repopulate initial Tree element
}

不要忘记重新绘制你的树。

谢谢你的回答!如果我理解正确,event.getDropIndex()会给我节点被放置的位置的索引。那么我如何找出节点来自哪里呢? - Alex
很抱歉,@Alex,目前没有获取初始索引的方法。请参考文档:http://www.primefaces.org/docs/api/4.0/org/primefaces/event/TreeDragDropEvent.html。您可以查看此解决方案以在树中查找节点的索引:http://stackoverflow.com/questions/26252529/get-the-index-of-the-node-in-a-primefaces-tree。 - Thrax
我想要实现相同的任务...没有解决这个问题的方法吗?重写一个方法,是吗? - Neo
Thrax的响应似乎有点奇怪,在“p:tree”官方文档(http://www.primefaces.org/showcase/ui/data/tree/dragdrop.xhtml)上找不到任何“listener”属性。也许他的意思是使用代码`<p:ajax event =“dragdrop” listener =“#{treeDNDView.onDragDrop}”.../>`。 - freak0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接