Yeah, that's what I figured given the example, however that's where my problem lies. The items I'm adding in populateItem in the GridView can't be found, I'm getting the hierarchy problem exception.
Here's what I'm doing in the page as an overview: 1. List Product Categories (ListView) 2. for each Category, retrieve and display Products (GridView) 3. Display 3-column table w/ Product details ("cols" in GridView) Here's the code: //add ListView object to page w/ data add(new ListView("categoryView", categoryModel) { protected void populateItem(ListItem item) { //get catagory item final ProductCategory category = (ProductCategory)item.getModelObject(); //add category label item.add(new Label("category", category.getName())); //STILL DON'T UNDERSTAND HOW TO PASS THIS INTO GRIDVIEW IModel productModel = new LoadableDetachableModel() { protected Object load() { return ProductProxy.getProducts(category); } }; IDataProvider provider = new ProductDataProvider(ProductProxy.getProducts(category)); //HARDCODED, NOT DETACHED! SEE DETACHED MODEL ABOVE! GridView productView = new GridView("productView", provider) { protected void populateItem(Item item) { //get product item final Product product = (Product)item.getModelObject(); //create thumbnail link w/ event Link thumbnailLink = new Link("thumbnailLink") { public void onClick() { setResponsePage(new ProductDetail(product)); } }; //add attribute modifier thumbnailLink.add(wmc); //add thumbnail link item.add(thumbnailLink); ..... You'll notice I've got a detached model in there...right now it's not being used since I haven't figured out how to send detached data from this page into the IDataProvider derived class (another issue, not to get off track, sorry!) Here's my HTML, I'm sure it's fantastically wrong but I need to see it rendered to decide if it looks right: ............... <tr wicket:id="categoryView"> <td> <span wicket:id="category" class="titleSmall">category</span> <hr width="100%" size="1" /> <br /> <table width="200" align="left" wicket:id="productView"> <tr> <td wicket:id="cols"> <table width="200" align="left"> <tr> <td> <a href="#" wicket:id="thumbnailLink"> <img src="#" wicket:id="thumnailImg" width="200" height="134" border="0" /> </a> </td> </tr> ................ Here's the exception I'm getting, it's not finding the thumbnailLink control above: WicketMessage: Unable to find component with id 'thumbnailLink' in [MarkupContainer [Component id = 4, page = com.myapp.ui.ProductCatalog, path = 2:categoryView:0:productView:1:cols:4.Item, isVisible = true, isVersioned = true]]. This means that you declared wicket:id=thumbnailLink in your markup, but that you either did not add the component to your page at all, or that the hierarchy does not match.[markup = file:/C:/Program%20Files/jboss-4.0.4.GA/server/default/tmp/deploy/tmp37375MyAppEAR.ear-contents/MyApp-exp.war/WEB-INF/classes/com/myapp/ui/ProductCatalog.html, index = 29, current = '<a href="#" wicket:id="thumbnailLink">' (line 61, column 15)] I must just be missing something obvious....I thought I set it up correctly per the wicket-examples GridViewPage example. On 5/22/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
cols objects are generated by the gridview, whatever components you add to the gridview in populate have to go inside the cols -Igor On 5/22/06, VGJ <[EMAIL PROTECTED]> wrote: > > > The code in examples looks screwy to me too, since it defines wicket:id="rows" for the GridView control and wicket:id="cols" as the columns...yet in the class there is no mention of "cols" anywhere. Is this some built-in object? > > I'm obviously getting an exception because I've setup "rows" and "cols" but there is no "cols" - every widget I've nested inside of "cols" is causing my hierarchy to be incorrect. > > > On Mon, 2006-05-22 at 10:02 -0700, Igor Vaynberg wrote: > > > > > On 5/22/06, VGJ < [EMAIL PROTECTED]> wrote: > > Ok, this makes more sense than the example in wicket-examples. However, what if the List I'm passing in is actually wrapped in a LoadableDetachableModel? > > that should be ok because dataview will check if the idataprovider impl you passed in also implements IDetachable and call detach on it at the end of request. > > so class MyDataProvider extends ListDataProvider implements IDetachable {....} > > > > > > Congrats on the baby, by the way!! > > thank you :) > > -Igor > > >
------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642 _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user