yes, there is a huge fundamental problem with your approach: you keep
the object reference which means the object is serialized instead of
being retrieved through a loadable detachable model.

-igor

On Thu, Oct 2, 2008 at 10:54 AM, Jürgen Lind <[EMAIL PROTECTED]> wrote:
>
> Thanks for the explanation. Still, one questions remains: is there
> a fundamental problem with the first approach or is it ok to use
> the object directly?
>
> J.
>
> Igor Vaynberg wrote:
>>
>> final TestItem itemModel = (TestItem) item.getModelObject();
>>
>> ^ on this line you retrieve the object from the model, you then use
>> this reference inside the onclick() which is called during another
>> request. since you use the model object reference directly it is not
>> loaded from the model.
>>
>> my code, on the other hand, never keeps a direct reference to the
>> model object, instead it retrieves it from the model inside onclick()
>>
>> -igor
>>
>> On Thu, Oct 2, 2008 at 10:10 AM, Jürgen Lind <[EMAIL PROTECTED]>
>> wrote:
>>>
>>> Igor Vaynberg wrote:
>>>>
>>>> your link works on the object and not on the model, instead
>>>>
>>>> add(new link("delete", item.getmodel()) { onclick() {
>>>> delete(getmodelobject()); }});
>>>>
>>> Thank you for your quick reply.
>>>
>>> Well the code is roughly the same(?) as in Listing 5.12 of WiA and there
>>> a custom Model is used to illustrate the solution. However, I thought my
>>> test would show me the problem first... Using your code above, the
>>> effect is as expected, i.e. the "wrong" (new) item is returned to be
>>> deleted.
>>>
>>> Now, the question is, what is wrong with my first implementation?
>>> It would seem that the problem that is solved using a custom ItemModel
>>> does not even occur. Or does that code prevent wicket from effectively
>>> detaching model objects and should thus be avoided? What would be the
>>> best practice here?
>>>
>>>
>>> J.
>>>
>>>> -igor
>>>>
>>>> On Thu, Oct 2, 2008 at 9:04 AM, Jürgen Lind <[EMAIL PROTECTED]>
>>>> wrote:
>>>>>
>>>>> Hi there,
>>>>>
>>>>> I have been struggling for some time now to understand how
>>>>> LoadableDetachableModel and a ListView work together. The starting
>>>>> point
>>>>> was Chapter 5.5.2 of "Wicket in Action" where it is recommended to
>>>>> provide
>>>>> your own ItemModel if the underlying list changes frequently. To try
>>>>> out
>>>>> how Wicket behaves without such a custom ItemModel, I wrote the
>>>>> following
>>>>> Test:
>>>>>
>>>>> <body>
>>>>>  <em wicket:id="listview">
>>>>>  <span wicket:id="label"></span><a wicket:id="delete">delete</a>
>>>>>  </em>
>>>>> </body>
>>>>>
>>>>>
>>>>> LoadableDetachableModel model = new LoadableDetachableModel() {
>>>>>
>>>>>  @Override
>>>>>  protected Object load() {
>>>>>  System.out.println("load");
>>>>>  return Arrays.asList(new TestItem[] {
>>>>>      new TestItem("a" + Math.random()),
>>>>>      new TestItem("b" + Math.random()),
>>>>>      new TestItem("c" + Math.random()) });
>>>>>  }
>>>>>
>>>>>  protected void onDetach() {
>>>>>  System.out.println("detach");
>>>>>  }
>>>>>
>>>>> };
>>>>>
>>>>> ListView listview = new ListView("listview", model) {
>>>>>  protected void populateItem(ListItem item) {
>>>>>  final TestItem itemModel = (TestItem) item.getModelObject();
>>>>>  item.add(new Label("label", itemModel.toString()));
>>>>>  item.add(new Link("delete") {
>>>>>
>>>>>    @Override
>>>>>    public void onClick() {
>>>>>      System.out.println("Delete " + itemModel);
>>>>>    }
>>>>>  });
>>>>>  }
>>>>> };
>>>>>
>>>>> add(listview);
>>>>>
>>>>>
>>>>> Now, I would expect that when I hit the "delete" link, Wicket would
>>>>> call
>>>>> the
>>>>> "load" Method of the LoadableDetachableModel before printing
>>>>> "Delete..."
>>>>> as
>>>>> the
>>>>> default implementation will use the index and the list to determine the
>>>>> item
>>>>> to
>>>>> delete. To my surprise, however, the "Delete..." message is printed
>>>>> with
>>>>> the
>>>>> correct item and the "load" Method is called afterwards. In my
>>>>> understanding,
>>>>> this contradicts the idea of the LoadableDetachableModel since Wicket
>>>>> seems
>>>>> to
>>>>> have a copy of the original list somewhere so that it can determine the
>>>>> list
>>>>> item on which the action was invoked before loading the underlying
>>>>> list.
>>>>>
>>>>> Can someone spot my mistake?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> J.
>>>>>
>>>>> --
>>>>> Dr. Jürgen Lind
>>>>> iteratec GmbH                Fon: +49 (0)89 614551-44
>>>>> Inselkammerstrasse 4         Fax: +49 (0)89 614551-10
>>>>> 82008 Unterhaching           Web: www.iteratec.de
>>>>>
>>>>> Sitz und Registergericht der iteratec GmbH: München HRB 113 519
>>>>> Geschäftsführer: Klaus Eberhardt, Mark Goerke, Inge Hanschke, Ralf
>>>>> Menzel
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> 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]
>>>>
>>> --
>>> Dr. Jürgen Lind
>>> iteratec GmbH                Fon: +49 (0)89 614551-44
>>> Inselkammerstrasse 4         Fax: +49 (0)89 614551-10
>>> 82008 Unterhaching           Web: www.iteratec.de
>>>
>>> Sitz und Registergericht der iteratec GmbH: München HRB 113 519
>>> Geschäftsführer: Klaus Eberhardt, Mark Goerke, Inge Hanschke, Ralf Menzel
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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]
>>
>
>
> --
> Dr. Jürgen Lind
> iteratec GmbH                Fon: +49 (0)89 614551-44
> Inselkammerstrasse 4         Fax: +49 (0)89 614551-10
> 82008 Unterhaching           Web: www.iteratec.de
>
> Sitz und Registergericht der iteratec GmbH: München HRB 113 519
> Geschäftsführer: Klaus Eberhardt, Mark Goerke, Inge Hanschke, Ralf Menzel
>
>
> ---------------------------------------------------------------------
> 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]

Reply via email to