I'd give CellTable/DataGrid a try, if your model is suitable for it and your cells aren't so 'fancy'. You can use async requests, paging and lightweight widgets (cell widgets); should be more than enough to speed up fetching/rendering time.
There is also the ElementBuilder API that makes easy to create DOM elements from chaining calls in a builder fashion. Checkout some
examples in
http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/javadoc/com/google/gwt/examples/dom/builder/ .
One interesting point is that you can use such builders also on server-side (the server-side actual implementation uses string manipulation instead of DOM operations) and send back the generated string to the client (never tried though)
http://gwt-code-reviews.appspot.com/1455802/Also AFAICT Elemental does not work well (or at all) with IE prior to 9.
On Tuesday, October 9, 2012 4:08:56 PM UTC+2, Roy wrote:
I have a large GWT app which unfortunately is slow in some old browsers I need to support (IE7). A major part of the slowness is my architecture - I am using GWT-RPC to download model objects from the server and then building a large HTML table in the browser using GWT Widgets. The table is not fancy - just text, links, and images - but it can get pretty big.
I'm considering fixing this by building some of my HTML on the server and then downloading it over GWT-RPC as a string, and injecting it in to the DOM using setInnerHtml(). I will still have to do some manipulation later in the browser though (my UI refreshes periodically in the background). What I would really like would be to write my code in such a way that I could decide at runtime if it was best to build the table on the server or in the browser.
Elemental looks like a promising way to do this - it would not be hard to generate a server-side implementation of the Elemental HTML interfaces that built up an HTML string, and then send that string over the wire to be injected in the browser. My application logic would only interact with the Elemental interfaces, so I could decide at runtime which implementation to use.
Does this sound reasonable or am I barking up the wrong tree here?