see http://herebebeasties.com/2007-08-17/wicket-bean-editor/ there is also a wicketstuff-crud project that does this...
-igor On Wed, Mar 19, 2008 at 9:21 AM, Eric Rotick <[EMAIL PROTECTED]> wrote: > I would like to be able to create a form where the number and type of form > component is decided at run time. > > I've done the research and found various guides, e.g > http://cwiki.apache.org/WICKET/forms-with-dynamic-elements.html but I've not > managed to crack it yet. > > I've created some panels for the form components, one for a fieldset and one > for the form. > > <wicket:panel> > <input type="text" wicket:id="textValue"> > </wicket:panel> > > <wicket:panel> > <fieldset> > <legend wicket:id="setName">setName</legend> > <table> > <tr wicket:id="eachEntry"> > <td wicket:id="fieldName">fieldName</td> > <td wicket:id="fieldValue">fieldValue</td> > </tr> > </table> > </fieldset> > </wicket:panel> > > <wicket:panel> > <form wicket:id="SingleItemFormName"> > <span wicket:id="SingleItemFormContents"/> > </form> > </wicket:panel> > > When I use this > > final Form form = new Form( "SingleItemFormName" ); > > for( Iterator views = display.getViews( ).iterator( ); views.hasNext( ); > ) { > IView view = (IView) views.next( ); > form.add( new FieldSetView( "SingleItemFormContents", readonly, > display, data, view ) ); > } > > add( form ); > > it works but only if there is one view. The reason is clear so I thought > this is the time to use a ListView. Note that I believe the code above shows > that the markup and panels are all working OK but the second time I use the > same id it barfs. > > If I use this > > final Form form = new Form( "SingleItemFormName" ); > > ListView contents = new ListView( "SingleItemFormContents", > display.getViews( ) ) { > protected void populateItem( ListItem item ) { > IView view = (IView) item.getModelObject( ); > item.add( new FieldSetView( view.getName( ), readonly, display, > data, view ) ); > } > }; > contents.setReuseItems( true ); > > form.add( contents ); > > add( form ); > > I get the error that components failed to render. > > I've also tried > > final Form form = new Form( "SingleItemFormName" ); > add( form ); > > ListView contents = new ListView( "SingleItemFormContents", > display.getViews( ) ) { > protected void populateItem( ListItem item ) { > IView view = (IView) item.getModelObject( ); > item.add( new FieldSetView( view.getName( ), readonly, display, > data, view ) ); > } > }; > contents.setReuseItems( true ); > add( contents ); > > form.add( contents ); > > and even > > final Form form = new Form( "SingleItemFormName" ); > > WebMarkupContainer wmc = new WebMarkupContainer( > "SingleItemFormContents" ); > for( Iterator views = display.getViews( ).iterator( ); views.hasNext( ); > ) { > IView view = (IView) views.next( ); > wmc.add( new FieldSetView( view.getName( ), readonly, display, data, > view ) ); > } > form.add( wmc ); > > but they all say that components failed to render. > > What am I missing? > > Thanks. > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
