hi all, I am having problems in implementing LinkTree in my page.
I need someone to put me through. I use to get the component not found exception ( WicketMessage: close tag not found for tag: <ul id="node11" wicket:id="node1">. Component: [MarkupContainer [Component id = node1]] Root cause: org.apache.wicket.markup.MarkupException: close tag not found for tag: <ul id="node11" wicket:id="node1">. Component: [MarkupContainer [Component id = node1]] at org.apache.wicket.markup.html.panel.Panel.onComponentTagBody(Panel.java:121) at org.apache.wicket.Component.renderComponent(Component.java:2480) at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1411) at org.apache.wicket.Component.render(Component.java:2317) at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1297) at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1476) at org.apache.wicket.MarkupContainer.renderAssociatedMarkup(MarkupContainer.java:639) at org.apache.wicket.markup.html.panel.Panel.onComponentTagBody(Panel.java:112) at org.apache.wicket.Component.renderComponent(Component.java:2480) at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1411) at org.apache.wicket.Component.render(Component.java:2317) at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1297) at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1427) at org.apache.wicket.Page.onRender(Page.java:1470) at org.apache.wicket.Component.render(Component.java:2317) at org.apache.wicket.Page.renderPage(Page.java:904) at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:231) at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1181) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353) at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:200) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218) at org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:460) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180) at com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633) at com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570) at com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152) at com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56) at com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325) at com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184) HTML part: <wicket:panel> <div id="doc-side-menu"> <h2>Menu</h2> <ul wicket:id="node1"> <li wicket:id="link1">Link 1</li> <!-- <li wicket:id="link2">Link 2</li> <li wicket:id="link3">Link 3</li> --> </ul> </div> </wicket:panel> The codes are pasted below. TPListTreeModelNode linkNodes=new TPListTreeModelNode(linkRoot); //start adding child node linkNodes.addNodes("link1", 1); // linkNodes.addNodes("link2", 2); // linkNodes.addNodes("link3", 2); tree = new LinkTree("node1", new TPListTreeModel(linkNodes, true)) { @Override protected Component newNodeComponent(String id, IModel model) { return new LinkIconPanel(id, model, this) { @Override protected void onNodeLinkClicked(TreeNode node, BaseTree tree, AjaxRequestTarget target) { tree.getTreeState().selectNode(node, !tree.getTreeState().isNodeSelected(node)); onClicked(node, tree, target); } @Override protected Component newContentComponent(String componentId, BaseTree tree, IModel model) { return new Label(componentId, getNodeTextModel(model)); } }; } protected void onClicked(TreeNode node, BaseTree tree, AjaxRequestTarget target) { if (!node.isLeaf()) { if (tree.getTreeState().isNodeExpanded(node)) { collapseAll(node); } else { expandAll(node); } tree.updateTree(target); } else { System.out.println(Arrays .toString(((DefaultMutableTreeNode) node) .getUserObjectPath())); } } protected void collapseAll(final TreeNode treeNode) { tree.getTreeState().collapseNode(treeNode); for (final Enumeration e = treeNode.children();e.hasMoreElements();) { collapseAll((TreeNode) e.nextElement()); } } protected void expandAll(final TreeNode treeNode) { tree.getTreeState().expandNode(treeNode); for (final Enumeration e = treeNode.children();e.hasMoreElements();) { expandAll((TreeNode) e.nextElement()); } } }; public class TPListTreeModelNode extends DefaultMutableTreeNode { Object ObjectNode; String tree=""; public TPListTreeModelNode(Object ObjectNode) { super(ObjectNode); this.ObjectNode=ObjectNode; } public TPListTreeModelNode() { super(); this.ObjectNode=new DefaultMutableTreeNode(); tree="default"; } public void addNodes(String childName, int grandChildNumber) { IModel newNode=new Model(childName); DefaultMutableTreeNode child =new DefaultMutableTreeNode((Object)newNode); // DefaultMutableTreeNode grandChild; add(child); /* for(int grandChildIndex=0; grandChildIndex<grandChildNumber; grandChildIndex++) { grandChild = new DefaultMutableTreeNode(childName+". "+grandChildNumber); child.add(grandChild); } */ } @Override public String toString(){ return tree; } } -- Ajayi Yinka, Itex Integrated Services, Nig. +2348022684477