Hi,

> would it be possible to move the removeAll() call at the beginning of the onPopulate()

we have to keep the items for reuse, so removeAll() cannot be called a the beginning of the method.

Sven

On 08/06/2014 12:26 PM, Martin Grigorov wrote:
Hi,

I think it is safe to move it up.
But let's see whether someone else sees an issue with this.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov


On Wed, Aug 6, 2014 at 12:20 PM, Guillaume Smet <[email protected]>
wrote:

Hi all,

We just got hit by a weird behavior of RefreshingView.onPopulate() and
I'm wondering if we could improve it or if there is a good reason for
the current order of the instructions in this method.

The code of the method is as follows:
    @Override
     protected final void onPopulate()
     {
         Iterator<IModel<T>> models = getItemModels();
         Iterator<Item<T>> items =
getItemReuseStrategy().getItems(newItemFactory(), models,
             getItems());
         removeAll();
         addItems(items);
     }


We are using a DataView so getItemModels() loads the list of the
DataProvider.

Our problem is that the removeAll() call which is done after that,
removes and detaches all the children of the RefreshingView
*including* components which detach the DataProvider when they are
detached.

Hence after the onPopulate() call, our DataProvider is detached and if
a component needs to use the DataProvider, it needs to attach it again
and the query is executed again.

So the obvious question: would it be possible to move the removeAll()
call at the beginning of the onPopulate() method or is there a good
reason to call removeAll() after the initialization?

Thanks for your feedback!

--
Guillaume


Reply via email to