Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
Table/TreeTable/Grid LazyLoading
Hi,
I've understood from previous posts that the OOTB lazy loading of Vaadin is automagically handled to that the client only fetches the needed rows from the server. Is there any way on the server side to know *which* rows are being fetched to the client?
I have a case where the customer can search for products but some additional information is fetched from a web service (current stock etc) and I don't want to perform background searches for thousands of rows that are never going to be needed. If I would know that e.g. rows 100-130 were just fetched to the client, I could start a background thread for those and push the results to the UI as the calls return from the service...
Thanks in advance,
Nik
Hi Nicklas,
sure. Your displaying component (e.g. Table) is fetching only those rows it needs to display, from
a Vaadin Container. https://vaadin.com/book/-/page/datamodel.container.html
https://vaadin.com/api/com/vaadin/data/Container.html
You might want to have a look at this add-on:
https://vaadin.com/directory#!addon/lazy-query-container
Now, to answer your question, you can of course use a Container implementation that records
which Items are being fetched and when.
Either do do a white-box "extends" derivation and override methods needed, delegating to the
super class using 'super' calls when finished with recording.
Or use the Delegation pattern https://en.wikipedia.org/wiki/Delegation_pattern to create a
Container interface implementation that records the access then delegates to the real Container.
Standard OO stuff I think.
HTH,
--Enver
Thanks for the reply.
Yep, looks like it should be possible to attach a thread in getItem(Object) that would fetch the information in the background and push it to the property (and the UI with a push) when it's done...