On Wed, Dec 21, 2011 at 12:17 PM, Adrian Wiesmann <awiesm...@somap.org> wrote: > On 12/21/11 11:05 AM, Martin Grigorov wrote: > >>>> org.apache.wicket.WicketRuntimeException: The component(s) below >>>> failed to render. A common problem is that you have added a component >>>> in code but forgot to reference it in the markup (thus the component >>>> will never be rendered). >> >> >> This error means that Wicket sees these components only in the Java >> component tree but doesn't see them in the markup tree. >> How exactly do you pass the generated markup to Wicket ? > > > Let's have a simple example: > > Simple layout/UI in XML: > > <frame> > <actionbox DataBinding="@Inventory[0]"> > <fop-action enabled="true" /> > </actionbox> > > <list DataBinding="@Inventory[0]"> > <field DataBinding="name"/> > </list> > </frame> > > Which is read and converted into an in-memory object tree: > > frame > actionbox > fop-action > ... > > This is then taken and Wicket classes are instantiated for every in-memory > object. > > In the constructor of every class (depending on its nature) there is code to > build the Wicket based object structure. Something like this: > > > ListView<ObjectBase> listView = new ListView<ObjectBase>("eachGuiElem", > formRoot.getChildren()) > { > @Override > protected void populateItem(ListItem<ObjectBase> item) > { > ObjectBase ob = item.getModelObject(); > > item.add(getPanelFromObjectBase("cell", ob, model, form)); > } > }; > > With that html content: > > ... > <tr wicket:id="eachGuiElem"> > <td style="border:0px;margin:0px;padding:0px;" wicket:id="cell"></td> > </tr> > ... > > Where getOPanelFromObjectBase contains something like this: > > protected Panel getPanelFromObjectBase(String id, ObjectBase ob, IModel<?> > model, final Form<?> form) > { > if (ob.getClass().equals(GListAndDetail.class)) > { > return new GWListAndDetail(id, model, (GListAndDetail) ob, > form); > } > else if (ob.getClass().equals(GActionBox.class)) > { > return new GWActionBox(id, model, (GActionBox) ob, form); > } > ... > > All classes starting with GWxxx are subclasses of Wicket Panels. > > Every GWxxx class has an HTML file with the same name and the ending html in > the same directory as the class file. So Wicket should be able to find the > right markup. And with the right markup it should be able to render not only > the object tree but also the html representation.
All this looks OK. Can you paste the ids of the components which cannot be rendered ? > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org