Я использую Primefaces 6.2 и хочу перетащить что-то из p:tree
и поместить его куда-нибудь еще, например, на p:panel
<h:form id="fTree" >
<p:tree id="tTree" value="#{bean.tree}" var="node"
selection="#{bean.node}" selectionMode="single"
draggable="true" droppable="true" dragdropScope="demo">
<p:ajax event="dragdrop" listener="#{bean.onDragDrop}">
<p:ajax event="select" listener="#{bean.onNodeSelect}"/>
<p:ajax event="expand" listener="#{bean.onNodeExpand}" />
<p:ajax event="collapse" listener="#{bean.onNodeCollapse}" />
<p:treeNode id="tn">
<h:outputText value="#{node.code}" />
<h:outputText id="otText" value="#{node.name}" />
<p:draggable for="otText" helper="clone" appendTo="@(body)" zindex="5" />
</p:treeNode>
</p:tree>
</h:form>
<h:form id="fEvent">
<p:panel id="pEvent" header="Panel" >
some content
</p:panel>
<p:droppable for=":fEvent:pEvent" tolerance="touch" datasource=":fTree:tTree" onDrop="handleDrop">
<p:ajax listener="#{bean.onDrop}" update="@form" />
</p:droppable>
</h:form>
Метод бина следующий:
public void onDrop(DragDropEvent ddEvent)
{
logger.info("DROP ");
}
С этим кодом я получаю следующую ошибку
java.lang.ClassCastException: org.primefaces.component.tree.Tree
cannot be cast to javax.faces.component.UIData
Я предполагаю, что я использую неправильный datasource = ": fTree: tTree" in droppable
. Даже для отвратительного я не совсем уверен, что это хороший подход.