Hello Johan,
thank you for your patience and advice :)
I think I'm on the right way now, and the essence for me is that such
special components will also need special models.
In my initial case for a Panel consisting of a TextField and a
Datepicker I solved this by giving the TextField a special model like
this:
class InternalModel extends AbstractModel {
public IModel getNestedModel() {
return DatePickerPanel.this.getModel();
}
public Object getObject(Component component) {
return getNestedModel().getObject(DatePickerPanel.this);
}
public void setObject(Component component, Object object) {
getNestedModel().setObject(DatePickerPanel.this, object);
}
}
I can now add this Panel to the form, and the contents of the
TextField are put in the property defined by the id of the
DatePickerPanel.
--
greetings from Berlin,
Rüdiger Schulz
Johan Compagner wrote on 03.05.2006 at 14:46:
> But what you want is a specialized FormComponent
> but give the panel the id you want to get out of the compound model
> but do give the compound model to the panel:
> class MyPanel extends Panel {
> public MyPanel(String id, Model parentCompoundModel, String[] textFieldIds)
> {
> super(id);
> setModel(new MyCompoundModel(parentCompoundModel,textFieldIds))
> add(new TextField(textFieldIds[0]));
> add(new TextField(textFieldIds[1]));
> }
> }
> then in that MyCompoundModel you have the getObject(null,id)
> where you concat all the properties of the parentcompound model
> and if you do getan getObject(textfield, textfield[i]) you get
> only the textfield[i] property of the parentcompound model
> johan
> On 5/3/06, Rüdiger Schulz <[EMAIL PROTECTED]> wrote:
> Hello Johan,
> yes, I'd like to make a generic Panel, which Model is updated
> (somehow) by a combination or some other computation of the Models of
> its included FormComponents. So the Panel shall map on a single
> property, but consists of several sub-components.
> I see that Palette from extensions does something like that, but I
> don't really see through the way it is done there (updateModel() of
> the Recorder calls updateModel() of the Palette, which itself seems to
> change to modelObject).
> To clarify this a little, some code snippets (at least there's no
> language barrier ;):
> class MyPanel extends Panel {
> public MyPanel(String id) {
> super(id);
> add(new TextField());
> add(new TextField());
> }
> }
> I'd like this Panel behave in such a way, that when I enter "foo" in
> the first field and "bar" in the second:
> myPanel().getModelObjectAsString() == "foobar"
> Where should I process the concatenation to update the panel model
> correctly? Because _then_ I could use MyPanel in a form with a CPM,
> and the form wouldn't have to care about anything happening inside the
> Panel.
> I hope this is a little clearer now :-)
> --
> greetings from Berlin,
> Rüdiger Schulz
> Johan Compagner wrote on 03.05.2006 at 13:49:
>> what does the panel have to do with the property in a CPM?
>> It is the things that are in the panel that want to use the CPM
>> that needs the right properties.
>> But are you saying you want to make a somwhat generic FormPanel
>> with textfields that must map on
>> specific properties on a random CPM?
>> You could use the BoundedCPM for this and bind the textfields in
>> the panel to the right dataprovider.
>> johan
>> On 5/3/06, Rüdiger Schulz <[EMAIL PROTECTED]> wrote:
>> Hello fellow Wicket users,
>> I have a general question regarding models and using them with forms
>> and custom panels.
>> In my example I have a form with a CompoundPropertyModel and several
>> standard TextFields etc., each one therefore being mapped to a
>> Property of the Bean passed to the CPM. So far so good :)
>> Now I want to create "Form Panels", meaning a Panel with one or more
>> FormComponents, which are then mapped together to a single property.
>> In this case it is a TextField and a corresponding DatePicker. I'd
>> like to put this in a Panel, so that I can reuse it easily on several
>> forms, and also being mapped to different Beans and Properties.
>> So, without the Panel this is no problem; I just set the ID of the
>> TextField to the name of the property, and the mapping is done via the
>> CPM. But this is not possible when I put this in a Panel, since in the
>> HTML for the Panel, the id must always be the same.
>> So, what needs to be done in the panel, that the TextField is always
>> mapped to the right Property of the enclosing form? Should I just set
>> the Model of the field to the one of the Panel?
>> And to make this more general:
>> How do I do this for a Panel with say two TextFields, whose contents
>> should be concatenated and put into a single property, again via using
>> a form with a CPM.
>> I'd like to have it work like this in the form:
>> add(new MyFormPanel("propertyName"));
>> Is this possible?
>> Any hints are welcome :-)
>> I have already read the Wiki-articles on Models
>> (http://www.wicket-wiki.org.uk/wiki/index.php/Using_Models and
>> http://www.wicket-wiki.org.uk/wiki/index.php/Models), but couldn't
>> find this out. I think I'm just a small step away - I already found
>> out about Model chaining, but got this to work only with a Panel being
>> mapped to a Property, which is iteself a Bean, and not a Date or
>> String as in my case :(
>> --
>> greetings from Berlin,
>> Rüdiger Schulz
>> -------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services, security?
>> Get stuff done quickly with pre-integrated technology to make your job easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
>> http://sel.as-us.falkag.net/sel?cmdlnk kid0709 bid 3057 dat1642
>> _______________________________________________
>> Wicket-user mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/wicket-user
> -------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmdlnk kid0709 bid 3057 dat1642
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user