Just don't pass the model to another page (also don't do this for anon-inner classes, or nested classes that carry a this pointer to the page)
Martijn On Sun, Aug 16, 2009 at 4:04 AM, Warren Bell<warr...@clarksnutrition.com> wrote: > Is there any issues you need to be concerned with when using the page > itself as the model object? > > Warren > > -----Original Message----- > From: jWeekend [mailto:jweekend_for...@cabouge.com] > Sent: Friday, August 14, 2009 5:43 PM > To: users@wicket.apache.org > Subject: RE: Model question ? > > > Warren, > > If you don't mind your "wicket:id"s becoming rather misleading and > arguably slightly harder to follow (magical) Java, you can even do ... > > public class HomePage extends WebPage { > private List<Vendor> vendors = Arrays.asList(new Vendor("v1"), > new Vendor("v2")); > private Vendor vendor = new Vendor("default vendor"); > public HomePage(final PageParameters parameters) { > setDefaultModel(new CompoundPropertyModel<HomePage>(this)); > Form<Void> form = new Form<Void>("form"); > add(form); > form.add(new ListChoice<Vendor>("vendor", vendors)); > Form<Vendor> editForm = new Form<Vendor>("vendorEditForm"); > add(editForm); > editForm.add(new TextField<String>("vendor.name")); > } > private class Vendor { > private String name; > Vendor(String name) {this.name = name;} > �...@override public String toString() {return name;} > } > } > > I haven't worked out how to properly paste html into nabble, so drop me > a line at the jWeekend site if you want the template code to go with > this, or a QuickStart. > > Any comments on the type-parameters used above anybody?! > > Regards - Cemal > jWeekend > OO & Java Technologies, Wicket Training and Development > http://jWeekend.com > > > Warren Bell-3 wrote: >> >> In your second example the Vendor in the vendorModel becomes the >> selected Vendor from the ListChoice and that Vendor name property >> becomes the value of the TextField? >> >> -----Original Message----- >> From: jWeekend [mailto:jweekend_for...@cabouge.com] >> Sent: Friday, August 14, 2009 3:47 PM >> To: users@wicket.apache.org >> Subject: Re: Model question ? >> >> >> Warren, >> >> ... and if you prefer using a CPM for your "vendorEditForm"s: >> >> public class HomePage extends WebPage { >> private List<Vendor> vendors = Arrays.asList(new Vendor("v1"), >> new >> Vendor("v2")); >> private Vendor vendor = new Vendor("default vendor"); >> public HomePage(final PageParameters parameters) { >> IModel vendorModel = new PropertyModel<Vendor>(this, > "vendor"); >> Form<Void> form = new Form<Void>("form"); >> add(form); >> // use your existing LDM instead of this hard-wired >> // List of vendors but >> // make sure you merge your edits properly! >> form.add(new ListChoice<Vendor>("vendors", >> vendorModel, vendors)); >> // using a PropertyModel per field >> Form<Void> editForm1 = new Form<Void>("vendorEditForm1"); >> add(editForm1); >> editForm1.add(new TextField<Vendor>("name", >> new PropertyModel<Vendor>(this, "vendor.name"))); >> // using a CompoundPropertyModel >> Form<Vendor> editForm2 = new Form<Vendor>("vendorEditForm2", >> new CompoundPropertyModel<Vendor>(vendorModel)); >> add(editForm2); >> editForm2.add(new TextField<Vendor>("name")); >> } >> >> private class Vendor implements Serializable{ >> private String name; >> protected Vendor(String name) {this.name = name;} >> public String toString(){return name;} >> // safer to have accessors & mutators >> } >> // safer to have accessors & mutators } >> >> Regards - Cemal >> jWeekend >> OO & Java Technologies, Wicket Training and Development >> http://jWeekend.com >> >> >> >> Warren Bell-3 wrote: >>> >>> How should I set up my model for the following situation. I have a >>> form with a ListChoice and a TextField. The TextField needs to access > >>> a property of the object selected of the ListChoice. I have it all >>> working using a ValueMap, but that seems like overkill to use a >>> ValueMap for one object. Here is how I have it: >>> >>> super(new CompoundPropertyModel<ValueMap>(new ValueMap())); >>> >>> ListChoice<Vendor> vendorListChoice = new >>> ListChoice<Vendor>("vendor", >> >>> new LoadableDetachableModel<List<Vendor>>(){...}, new >>> IChoiceRenderer<Vendor>(){...}); >>> >>> TextField<String> accountNumberField = new >>> TextField<String>("vendor.accountNumber"); >>> >>> I thought I could do something like this: >>> >>> super(new CompoundPropertyModel<Vendor>(new Vendor())); >>> >>> The ListChoice is the same as above and the TextField like this: >>> >>> TextField<String> accountNumberField = new >>> TextField<String>("accountNumber"); >>> >>> The problem with this is that the ListChoice is trying to set a >>> property on the model named vendor when I realy want the selected >>> ListChoice vendor object be the model object and have the TextField >>> access the accountNumber property of the ListChoice vendor. >>> >>> How should I set up my model to deal with this type of situation or >>> is >> >>> a ValueMap the best way? >>> >>> Thanks, >>> >>> Warren >>> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/Model-question---tp24978225p24979787.html >> Sent from the Wicket - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> > > -- > View this message in context: > http://www.nabble.com/Model-question---tp24978225p24980619.html > Sent from the Wicket - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > -- Become a Wicket expert, learn from the best: http://wicketinaction.com Apache Wicket 1.4 increases type safety for web applications Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.4.0 --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org