我有一棵树,我的代码是:
<p:tree id="tree_newCms_pl"
value="#..............."
var="item"
animate="true"
selectionMode="single" selection=".............."
dynamic="true"
draggable="true" droppable="true">
我只想允许更改节点的位置,并防止它被丢弃到不同的父节点上。我该如何解决这个问题?
答案 0 :(得分:3)
我通过以下方式解决了类似的问题。
在辅助bean中检查事件中的drop TreeNode的类型,并且仅在基础数据模型是被拖动节点的有效目标时才更新它。
TreeNode dragNode = event.getDragNode();
TreeNode dropNode = event.getDropNode();
if ( dropNode.getType().equals( VALID_TYPE ) )
{
//Update the underlying data structure here
}
else
{
//Display a warning to the user if required
}
我也在更新树的监听器事件中,所以它从数据模型中重新绘制,例如
<p:ajax event="dragdrop" listener="#{managingBean.onDragDrop}" update="tree_newCms_p"/>
如果你不重绘树,它会将元素显示在错误的位置,即使没有进行基础移动。
答案 1 :(得分:3)
这可以使用属性来完成。的 dropRestrict="sibling"
即可。
<p:tree id="tree_newCms_pl"
value="#..............."
var="item"
animate="true"
selectionMode="single" selection=".............."
dynamic="true"
draggable="true" droppable="true" dropRestrict="sibling">
的说明
在节点被删除有效值时定义父子限制 没有(默认)和兄弟。