AddressFormComponent should extend Panel, not FormComponentPanel.
FormComponentPanel is used for special cases where you have several
FormComponents that work together to edit a model value, such as a date
editor that has dropdowns for month and day.
On a FormComponentPanel, you have to implement convertValue() to gather
the input from your subcomponents, synthesize them into a single value,
and call setConvertedValue(). Since you never call setConvertedValue(),
your panel pushes null back into your address model.
jk
On Tue, May 05, 2009 at 11:22:44AM -0700, FlyingMustang wrote:
>
>
> igor.vaynberg wrote:
> >
> > show us your code.
> >
>
> Ok, I have a class 'Person' with an'Address-Property. My Form-object has a
> simple Model wrapping a Person-object. The constructor creating the Panel
> with the form contains these lines:
>
> form = new Form<Person>("form", new Model<Person>());
> personFormComponent = new
> PersonFormComponent<Student>("personFormComponent", form.getModel());
> addressFormComponent = new
> AddressFormComponent<Address>("addressFormComponent", new
> PropertyModel<Address>(this.form.getModel(), "address"));
>
> form.add(personFormComponent);
> form.add(addressFormComponent);
>
> After creation of this Panel I call form.setModelObject(...). So the model
> ist not empty. The PersonFormComponent works well as it only sets some
> String-Properties of the Person-Object. But I have trouble with the
> AddressFormComponent which looks like this:
>
> public class AddressFormComponent<T extends Address> extends
> FormComponentPanel<T> {
> protected TextField<String> cityField, postcodeField, streetField;
> protected IModel<T> model;
>
> public AddressFormComponent(String id, IModel<T> model) {
> super(id, model);
>
> // Model
> this.model = model;
>
> // Straße
> streetField = new TextField<String>("streetField", new
> PropertyModel<String>(model, "street"));
> streetField.setRequired(true);
> streetField.add(StringValidator.lengthBetween(0, 100));
>
> // PLZ
> postcodeField = new TextField<String>("postcodeField", new
> Model<String>(""));
> postcodeField.setRequired(true);
>
> // Stadt
> cityField = new TextField<String>("cityField", new
> Model<String>(""));
> cityField.setRequired(true);
> cityField.add(StringValidator.lengthBetween(0, 50));
>
> this.add(streetField);
> this.add(postcodeField);
> this.add(cityField);
> }
> }
>
> After submitting the whole form (with an AjaxButton) the Address-Property of
> my Person-Object ist null. Perhaps I did not use the Models correctly ...?
> --
> View this message in context:
> http://www.nabble.com/Example-for-FormComponentPanel-best-practice-for-reusable-form-components-tp23391811p23393211.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]