The panel is part of the form, but only needs to access one property of MyModel. The rest is handled by other components of the form. The compoundPropertyModel is passed through like this:
MyForm form = new MyForm("form", <CompoundPropertyModel>); Then within MyForm, the panel is added. I also want to reuse the panel for multiple properties of different Models, so it shouldn't depend on the property name ("text" in this case). In MyForm I changed add(new MyPanel("textPanel", new PropertyModel(this.getModelObject(), "text")) into add(new MyPanel("textPanel", new PropertyModel(this.getModel(), "text")) which works. thanks, Pieter 2007/6/13, Gregory Maes <[EMAIL PROTECTED]>: > Where do you use a CompoundPropertyModel? > > For your problem you have several solutions. > Here is 2 of them : > > > 1) - With the CompoundPropertyModel > > class MyModel { > private String text; > > public MyModel(String text) { > this.text = text; > } > > public String getText(){ > return text; > } > public void setText(String text) { > this.text = text; > } > } > > class MyPanel extends Panel{ > > public MyPanel(String id, MyModel myModelObject){ > super(id, new CompoundPropertyModel(myModelObject)); > add(new TextField("text")); // the TextField id must be the name of your > object property > (...) > } > > } > MyModel myModelObject = new MyModel("hello"); > add(new MyPanel("textPanel", myModelObject); > > > > 2) - With the PropertyModel > > > class MyModel { > private String text; > > public MyModel(String text) { > this.text = text; > } > > public String getText(){ > return text; > } > public void setText(String text) { > this.text = text; > } > } > > class MyPanel extends Panel{ > > public MyPanel(String id, MyModel myModelObject){ > super(id); > add(new TextField("panelField", new PropertyModel(myModelObject,"text"))); > (...) > } > > } > MyModel myModelObject = new MyModel("hello"); > add(new MyPanel("textPanel", myModelObject); > > > Enjoy :-) > > Greg > > Pieter Cogghe a écrit : > > > Thanks for the responses, > > > > I ran into trouble when using a panel. Somehow I can't get my model > > property associated with the textfield in the panel. > > > > class MyModel { > > (...) > > public String getText(){ > > return text; > > } > > (...) > > } > > > > My panel (simplified) > > > > class MyPanel extends Panel{ > > > > public MyPanel(String id, IModel fieldModel){ > > super(id); > > add(new TextField("panelField", fieldModel)); > > (...) > > } > > } > > > > then I add the panel to the form (which has the MyModel as a > > CompoundPropertyModel): > > > > add(new MyPanel("textPanel", new PropertyModel(this.getModelObject(), > > "text")) > > > > So the textfield within the panel should be associated with the "text" > > property of the compoundProperty model (MyModel.getText). Somehow I > > feel I get something seriously wrong here. > > > > Thanks, > > > > Pieter > > > > > > > > 2007/6/13, Jean-Baptiste Quenot <[EMAIL PROTECTED]>: > > > >> * Pieter Cogghe: > >> > >>> Hi, > >>> > >>> (I'm new to Wicket and relatively new to Java so beware of stupid > >>> questions and bad code) > >>> I've got a form with a text input. I want it rendered like this: > >>> > >>> <form (...)> > >>> (...) > >>> <p> > >>> <label for="input_name">Name</label> > >>> <input type="text" id="input_name" name="name" /> > >>> </p> > >>> (...) > >>> </form> > >>> > >>> I want to write my own component, so I only have to write this > >>> template html-code: > >>> > >>> <form wicket:id="input"> > >>> (...) > >>> <p> > >>> <input type="text" wicket:id="name" /> > >>> </p> > >>> (...) > >>> </form> > >>> > >>> The java code to add this to a page (TextFieldWithIdLabel of the > >>> custom component) > >>> > >>> add(new TextFieldWithIdLabel("name").setLabel(new Model("Name"))); > >>> > >>> > >>> I'm not sure how to this, I started by extending TextField and > >>> overwriting onTagComponent like this: > >>> > >>> protected void onComponentTag(ComponentTag tag){ > >>> setOutputMarkupId(true); > >>> super.onComponentTag(tag) > >>> } > >>> > >>> This works fine for the input-id, however I'm not sure how I can add > >>> the label tag in front of it. Maybe I should write a custom panel? > >>> > >> A Panel would be nice, or otherwise there's a dirty hack to > >> directly write tags into the response. > >> -- > >> Jean-Baptiste Quenot > >> aka John Banana Qwerty > >> http://caraldi.com/jbq/ > >> > >> ------------------------------------------------------------------------- > >> This SF.net email is sponsored by DB2 Express > >> Download DB2 Express C - the FREE version of DB2 express and take > >> control of your XML. No limits. Just data. Click to get it now. > >> http://sourceforge.net/powerbar/db2/ > >> _______________________________________________ > >> Wicket-user mailing list > >> Wicket-user@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/wicket-user > >> > >> > > > > > > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user > -- Pieter Cogghe Ganzendries 186 9000 Gent 0487 10 14 21 ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user