【问题标题】:Primefaces Tree: don't remove the node after drag and dropPrimefaces Tree:拖放后不要删除节点
【发布时间】:2014-11-06 13:58:24
【问题描述】:

原PrimeFacesTree节点拖拽后是否可以不移除?默认行为是删除在另一个地方拖放的节点。我可以防止这种情况发生吗?

我正在使用 Primefaces 4.0

【问题讨论】:

    标签: java jsf primefaces drag-and-drop tree


    【解决方案1】:

    没有任何预制属性可以在 dropEvent 上复制节点。

    解决方案是为您的<p:tree> 元素添加一个监听器:

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

    然后你需要通过在你的 backbean 方法中复制它来在初始位置重新创建节点:

    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 不幸的是,没有任何方法可以获取初始索引。请参阅文档:primefaces.org/docs/api/4.0/org/primefaces/event/…。您可以查看此解决方案来查找树中节点的索引:stackoverflow.com/questions/26252529/…
    • 我想完成同样的任务...没有办法解决这个问题吗?覆盖一个方法,...?
    • Thrax 的反应似乎有点奇怪,在“p:tree”官方文档(primefaces.org/showcase/ui/data/tree/dragdrop.xhtml)上找不到任何“listener”属性,也许他的意思是代码&lt;p:ajax event="dragdrop" listener="#{treeDNDView.onDragDrop}" .../&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    相关资源
    最近更新 更多