I think you have to add "projects" to the current category item, not to "this" (which would refer to the categories listview itself).
So try replacing: this.add(projects); By: item.add(projects); 2009/3/26 Luther Baker <[email protected]>: > I'm trying to create a page - similar to Jira's BROWSE PROJECTS. > > My initial take amounts to a loop in a loop. > > The outer loop is CATEGORIES and the inner loop is PROJECTS in said > category. > > | CATEGORY 1 > | p1 > | p2 > | p3 > > | CATEGORY 2 > | p4 > | p5 > | p6 > > ... > > I've attached code below but if I removed the nested loop, I can easily loop > over just CATEGORIES but as soon as I add the nested loop, it fails with the > following > > WicketMessage: Error attaching this container for rendering: [Page class = > com.fuzzybearings.milestones.web.page.user.ProjectsPage, id = 3, version = > 0] > > Root cause: > > java.lang.IllegalArgumentException: A child with id 'projects' already > exists: > [MarkupContainer [Component id = categories]] > > > My intuition tells me that 'wicket:id="projects"' is repeating since it is > contained in an outer loop ... but I'm not sure how else to identify this > type of structure in a general way. Is there a loop container more suited to > this ... open to suggestions. > > Thanks in advance, > > -Luther > > > > *.html snippet > > <div wicket:id="categories"> > <table> > <tr wicket:id="projects"> > <td><a wicket:id="projectLink" href="#"><span > wicket:id="projectLabel">[project]</span></a></td> > </tr> > </table> > </div> > > > *.java snippet > > public ProjectsPage(ResourceModel bodyTitle) > { > super(bodyTitle); > > ListView categories = new ListView("categories", > this.getCategories()) > { > > �...@override > protected void populateItem(ListItem item) > { > Category category = (Category) item.getModelObject(); > > ListView projects = new ListView("projects", > ProjectsPage.this.getProjects(category)) > { > > �...@override > protected void populateItem(ListItem item) > { > Project project = (Project) item.getModelObject(); > Link link = new Link("projectLink", item.getModel()) > { > > �...@override > public void onClick() { ... } > }; > link.add(new Label("projectLabel", > project.getName())); > item.add(link); > } > }; > this.add(projects); > } > }; > this.add(categories); > } > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
