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=setNamesetName/legend
table
tr wicket:id=eachEntry
td wicket:id=fieldNamefieldName/td
td wicket:id=fieldValuefieldValue/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]