I have a TreeTable that has inputText fields for each node. Next to the inputText there is a button that, when clicked, is supposed to delete the node:
Code: Select all
<p:treeTable id="main-tree" var="n" ...>
<p:column>
<f:facet name="header">Name</f:facet>
<h:outputText value="#{n.name}"/>
</p:column>
<p:column>
<f:facet name="header">Value</f:facet>
<p:inputText value="#{n.value}"/>
</p:column>
<p:column>
<p:commandButton icon="ui-icon-minus" process="@this" update="main-tree" action="#{model.removeListEntry(n)}"/>
</p:column>
</p:treeTable>
Code: Select all
public void removeListEntry(NodeData nodeData) {
TreeNode treeNode = nodeData.getTreeNode();
assert treeNode != null;
// Clear children
treeNode.getChildren().clear();
// Deatch from parent
treeNode.getParent().getChildren().remove(treeNode);
treeNode.setParent(null);
}
Code: Select all
2012-06-08 15:08:38,349 - ERROR - javax.enterprise.resource.webcontainer.jsf.application - Error Rendering View[/operation-exec.xhtml]
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.RangeCheck(ArrayList.java:547) ~[na:1.6.0_29]
at java.util.ArrayList.get(ArrayList.java:322) ~[na:1.6.0_29]
at org.primefaces.component.api.UITree.findTreeNode(UITree.java:112) ~[primefaces-3.3.jar:na]
at org.primefaces.component.api.UITree.findTreeNode(UITree.java:120) ~[primefaces-3.3.jar:na]
at org.primefaces.component.api.UITree.setRowKey(UITree.java:79) ~[primefaces-3.3.jar:na]
at org.primefaces.component.api.UITree.visitTree(UITree.java:408) ~[primefaces-3.3.jar:na]
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UINamingContainer.visitTree(UINamingContainer.java:163) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIForm.visitTree(UIForm.java:344) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) ~[jsf-api.jar:2.1.3-FCS]
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376) ~[jsf-impl.jar:2.1.3-FCS]
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:297) ~[jsf-impl.jar:2.1.3-FCS]
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:981) ~[jsf-api.jar:2.1.3-FCS]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756) ~[jsf-api.jar:2.1.3-FCS]
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:390) ~[jsf-impl.jar:2.1.3-FCS]
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [jsf-impl.jar:2.1.3-FCS]
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl.jar:2.1.3-FCS]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl.jar:2.1.3-FCS]
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl.jar:2.1.3-FCS]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jsf-api.jar:2.1.3-FCS]
...