[
https://issues.apache.org/jira/browse/WICKET-2888?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907606#action_12907606
]
Pedro Santos commented on WICKET-2888:
--------------------------------------
I miss that: updating an tree item using ajax at the time this component don't
exist at the browser, since it was not created via javascript by an postponed
method, generate the problem you described.
I'm thinking about encapsulate this create/update html logic inside the
TreeItem class and leave the AbstractTree just assembling those items. I mean:
maintain record of what TreeNode objects are dirty, and not what TreeItem are.
Then program TreeItem for detect dirty state and respond with the creation
javascript.
> Nullpointer when inserting [i.e. moving] a node in a TreeTable (AbstactTree,
> treeNodesInserted)
> -----------------------------------------------------------------------------------------------
>
> Key: WICKET-2888
> URL: https://issues.apache.org/jira/browse/WICKET-2888
> Project: Wicket
> Issue Type: Bug
> Components: wicket, wicket-extensions
> Affects Versions: 1.4.2
> Environment: On Linux, AMD64
> Reporter: Rob Audenaerde
> Attachments: patch.txt, tree-quickstart.tar.gz
>
>
> A have a simple tree:
> root
> -c1
> --cc1
> -c2
> --cc2
> -c3
> I want to move c3 from parent root to parent c2. This works when the treenode
> c2 is not expanded, i.e. cc2 is not shown. When c2 is expanded, the action
> results in a nullPointerException in treeNodesInserted. The cause of the
> nullPointer is:
> parentItem.getChildren() <-- returns null, but in line 845 the
> parentItem.getChildren().add() is called, thus the nullPointer.
> Any hints?
> my piece of tree manipulation code:
> table.getTreeTable().modelChanging();
> DefaultTreeModel model = (DefaultTreeModel)
> table.getTreeTable().getDefaultModelObject();
> DefaultMutableTreeNode parent = (DefaultMutableTreeNode)
> myNode.getParent();
> // getIndexOfChild returns -1 if either of th nodes == null
> int myIndex = model.getIndexOfChild( parent, myNode );
> if ( myIndex < 1 ) // 0 or -1
> {
> return;
> }
> DefaultMutableTreeNode previousSibling =
> (DefaultMutableTreeNode) model.getChild( parent, myIndex - 1 );
> model.removeNodeFromParent( myNode );
> //insert the node as last
> model.insertNodeInto( myNode, previousSibling,
> model.getChildCount( previousSibling ) );
> table.getTreeTable().modelChanged();
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.