Hello all, hello Igor,

thanks for your helpful reply.

I adjusted the code so that only the return of TextField.getModelObjectAsString is set in the approriate POJO, which is then written to the database, and the ComboBox gets updated. The backend routines are all called as expected.

but...

I still do not get a value from the TextField. I tried PropertyModel and Model and both have a null ModelObject and thus return an empty string on getModelObjectAsString().

Here is my logging output with Model:

INFO - NaviPage - NewCategoryButton.onSubmit():semNaviButton INFO - NaviPage - TextField Model: Model:classname=[wicket.model.Model]:nestedModel=[null]:object=[null]
INFO  - NaviPage                   - TextField ModelObject: null
INFO  - NaviPage                   - TextField ModelObjectString:

with PropertyModel:

INFO - NaviPage - NewCategoryButton.onSubmit():semNaviButton INFO - NaviPage - TextField Model: Model:classname=[wicket.model.PropertyModel]:attached=false: nestedModel=[null]:expression=[text]:propertyType=[null]
INFO  - NaviPage                   - TextField ModelObject: null
INFO  - NaviPage                   - TextField ModelObjectString:


Instantiation of the TextField with Model:

TextField tf = new TextField(qid + "Cat", new Model());

with PropertyModel:

TextField tf = new TextField(qid + "Cat", new PropertyModel(pojoObj, "text"));

The onSubmit Method of the Button Subtype:

                public void onSubmit()
                {
                        log.info("NewCategoryButton.onSubmit():" + getId());
                        IModel m = textField.getModel();
                        log.info("TextField Model: " + m);
                        log.info("TextField ModelObject: " + 
textField.getModelObject());
log.info("TextField ModelObjectString: " + textField.getModelObjectAsString());
                        ids.setText(textField.getModelObjectAsString());
                        getDao().merge(ids);
                        
choice.setChoices(getDao().findAllFromClass(ids.getClass()));
                        choice.updateModel();
                }

I did realize though, that the nested Model was the wrong way to go. But why is the Model Object null? IMHO this one is the object that is used to return the String value from, inside getModelObjectAsString. Do I have to set it myself? (I thought at least PropertyModel would use my POJO?) I can't find a hint in the API.

I am quite sure that I missed something crucially substantial about Models... ^^

Best regards,
Chantal

From: "Igor Vaynberg" <[EMAIL PROTECTED]>
To: <wicket-user@lists.sourceforge.net>
Subject: RE: [Wicket-user] Accessing the PropertyModel of a TextField (former How can a model wrap more than one POJO)
Date: Wed, 26 Oct 2005 09:36:57 -0700
Reply-To: wicket-user@lists.sourceforge.net

The nested model does not refer to your object, it refers to a model nested
inside the current model (notice the Imodel return type). Some models
support this, others don't. The property model does not. It has its own
internal pointer to your object. To get the text from the textfield simply do: textfield.getModelObjectAsString() - this does the following - retrieve
the model from the textfield which is your property model, calls
getModelObject on the property model which retrieves the property from your model object, and then casts that to a string all in one convinient step.

-Igor




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to