You should use a LoadableDetachableModel and wrap it around a
CompondPropertyModel or whatever other type of model you're using.

In this way the object will be refreshed on each "render" with the values
from the databse.

Btw, why exactly are you using a map for?
Did you develop your own compound form componet in order to implement and
work with FormComponent#**updateModel?

~ Thank you,
   Paul Bors
On Mon, Jan 21, 2013 at 11:54 PM, Ondrej Zizka <ozi...@redhat.com> wrote:

> Forgot to write: My problem is that the Map item is deleted, but Wicket
> renders the given sub-component with the old Map for some reason.
> But on next Ajax request, it already uses the new one.
> I'm a bit puzzled.
>
>
>
> On 01/22/2013 05:49 AM, Ondrej Zizka wrote:
>
>> On 01/21/2013 10:52 PM, Martin Grigorov wrote:
>>
>>> Hi,
>>>
>>> Wicket updates the model with the new value. If this model is shared
>>> between several components then all of them have the new value for free.
>>> No
>>> need to notify them.
>>> If you still need to notify then you can use #updateModel() method -
>>> org.apache.wicket.markup.html.**form.FormComponent#**updateModel.
>>>
>> I need to notify when I change the object (model stays the same) in this
>> way:
>>
>>     private void onProductUpdate( AjaxRequestTarget target ) {
>>         if( target != null )  target.add( this.feedbackPanel );
>>         try {
>>             product = productDao.update( product );
>>             modelChanged();
>>             this.info("Product saved.");
>>             if( target != null )
>> target.appendJavaScript("**window.notifyFlash('Product saved.')");
>>         } catch( Exception ex ){
>>             this.feedbackPanel.info("**Saving product failed: " +
>> ex.toString());
>>         }
>>     }
>>
>> So I basically need to tell Wicket that this and that needs to re-render.
>> Maybe I do the mistake of thinking "Wicket works like Swing which
>> basically works like MFC based on Win32 API", so perhaps I should forget
>> the idea of "invalidating" the model?
>> Or is updateModel() the way to go here?
>>
>> Thanks,
>> Ondra
>>
>>
>>> CompoundPropertyModel is meant for components which have children. Such
>>> component may have a compound model and all its children can update the
>>> value in the respective branch of this model.
>>>
>>>
>>> On Mon, Jan 21, 2013 at 7:30 PM, Ondrej Zizka <ozi...@redhat.com> wrote:
>>>
>>>  Hi all,
>>>>
>>>> I have a component containing a form with many TextFields.
>>>> The way it should work is that when changed, the value should be
>>>> persisted
>>>> immediately (no Save button, all through AJAX).
>>>>
>>>> The AJAX calls work fine, the value gets to the model.
>>>>
>>>> The code to save the model (and the entity contained) is in the parent
>>>> component.
>>>> I thought I would override onModelChanged() to propagate the changes
>>>> from
>>>> the components to the parent.
>>>> But onModelChanged() is not called.
>>>>
>>>> Parent has its own model as class member field.
>>>> The subcomponents use this:
>>>>
>>>>      ReleaseTraitRowPanel( String id, IModel<IHasTraits> relModel, ...
>>>> ) {
>>>>          ...
>>>>          PropertyModel<String> traitModel = new PropertyModel(
>>>> relModel.getObject().****getTraits(), prop);
>>>>
>>>>          EditableLink4 link = new EditableLink4("link", traitModel){
>>>>              // Pass the change notification to upper level. TODO: Does
>>>> Wicket do this automatically?
>>>>              @Override protected void onModelChanged() {
>>>>                  ReleaseTraitRowPanel.this.****onModelChanged();
>>>>              }
>>>>          };
>>>>          ...
>>>>
>>>>      }
>>>>
>>>> How should it be done?
>>>> Should I pass the onModelChanged() at all? Or does wicket have some way
>>>> to
>>>> notify the other model of changes?
>>>>
>>>> Related - is CompoundPropertyModel only for forms, or can I use it with
>>>> any component? I could use it here - `prop` is the same as id.
>>>>
>>>> Thanks,
>>>> Ondra
>>>>
>>>> ------------------------------****----------------------------**--**---------
>>>>
>>>> To unsubscribe, e-mail: 
>>>> users-unsubscribe@wicket.**apa**che.org<http://apache.org>
>>>> <users-unsubscribe@**wicket.apache.org<users-unsubscr...@wicket.apache.org>
>>>> >
>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>
>>>>
>>>>
>>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: 
>> users-unsubscribe@wicket.**apache.org<users-unsubscr...@wicket.apache.org>
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> users-unsubscribe@wicket.**apache.org<users-unsubscr...@wicket.apache.org>
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to