primefaces: Tree: wrong order at server side after drag&drop

Describe the defect If you move (drag&drop) an item in tree downwards, then the frontend shows it correctly but the model at server side has wrong order.

Environment:

  • PF Version: 12.0.0 (current dev version)
  • PF Theme: nova-light
  • JSF + version: MyFaces 2.3.9
  • Affected browsers: ALL

To Reproduce Initial order

Node 1
Node 2
Node 3
Node 4
Node 5

move an item

Node 2
<-- Node 1
Node 3
Node 4
Node 5

order at server side (vs client side)

Node 2 (Node 2)
Node 3 (Node 1)
Node 1 (Node 3)
Node 4 (Node 4)
Node 5 (Node 5)

I have already created a bugfix and pull request #8692

Expected behavior The order of model at server side is correct

Example XHTML

<f:metadata>
    <f:viewAction action="#{indexController.init()}"/>
</f:metadata>

<p:tree id="testTree" value="#{indexController.root}" var="node" draggable="true" droppable="true">
    <p:treeNode>
        <h:outputText value="#{node}"/>
    </p:treeNode>
</p:tree>

<p:commandButton process="@this" update="testTree" value="Update"/>

The update button can be used to show the server side data

Example Bean

@Named
@ViewScoped
public class IndexController implements Serializable
{
    private TreeNode<String> root;

    public void init() {
        root = new DefaultTreeNode<>();
        new DefaultTreeNode<>("Test 1", root);
        new DefaultTreeNode<>("Test 2", root);
        new DefaultTreeNode<>("Test 3", root);
        new DefaultTreeNode<>("Test 4", root);
        new DefaultTreeNode<>("Test 5", root);
    }

    public TreeNode<String> getRoot()
    {
        return root;
    }

    public void setRoot(TreeNode<String> root)
    {
        this.root = root;
    }
}

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 16 (16 by maintainers)

Commits related to this issue

Most upvoted comments

I will check this issue