Hello,
i have implemented a document tree with the <rich:tree> and <rich:recursiveTreeAdaptor> components with drag and drop support. The root element of the tree is a Instance of a Entity class. The problem is that the tree does not reRender after the drag and drop operation. The dropListener is executed successfully, but the tree only reRenders if i expand or collapse a subtree. the rich:tree is nested in a <a4j:outputPanel>. I tried to change the reRender attribute to the tree itself and the outputPanel and added a reRender attribute to the <rich:dndParam> and <ich:treeNode> components, but nothing worked. Does anybody has a hint?
Here is the code:
<a4j:outputPanel id="treePanel" styleClass="editTree" layout="block">
<a4j:form>
<rich:tree id="documenttree" style="width:600px" switchType="ajax"
dragIndicator=":treeDragIndicator"
dropListener="#{documentHandler.processDrop}" reRender="documenttree" >
<rich:recursiveTreeNodesAdaptor id="treeAdapter"
roots="#{documentHandler.nodes}"
var="item"
nodes="#{item.children}">
<rich:treeNode icon="img/icons/iconFolder.gif"
iconLeaf="img/icons/iconFolder.gif"
dragType="#{item.type.name}"
dragValue="#{item.id}"
dropValue="#{item.id}"
acceptedTypes="chapter, sect1, sect2">
<h:outputText value="#{item.title}"/>
<rich:dndParam name="label" type="drag" value="#{item.id}"/>
</rich:treeNode>
</rich:recursiveTreeNodesAdaptor>
</rich:tree>
</a4j:form>
</a4j:outputPanel>
an here ist the getter method that returns the root element of the tree:
public List<Element> getNodes() {
List<Element> nodes = new ArrayList<Element>();
nodes.add(this.document.getRoot());
return nodes;
}
Best Regards,
Jan