use a refreshingview or a dataview or a listview instead of repeatingview. -igor
On Fri, Jan 30, 2009 at 6:54 AM, Steve Flasby <st...@flasby.org> wrote: > Chaps. > Sorry, this is rather long. I am struggling to find a way to > handle complex state in my application which will keep the > session reasonably small. > > Here is what I am doing: > > A Portfolio has many Position. > > class Portfolio { > List<Position> getPositions(){... > } > > I have a PortfolioPage which shows all Positions for a Portfolio > in a reusable Panel: > > class PortfolioPage extends WebPage { > public PortfolioPage(String ptfId ) { > add( new PortfolioPane("XX", new PortfolioModel(ptfID)) ); > } > } > > class PortfolioPanel extends Panel { > public PortfolioPane(String id, PortfolioModel model ) { > super(id, model); > RepeatingView v = new RepeatingView(); > add(v); > for( Portfolio ptf : getModelObject().getPositions() ) { > v.add( new PositionRow(ptf) ); > } > } > > PortfolioModel is a LoadableDetachableModel and can quickly fetch > its state (and all its Positions) from the DB using the ptfID. > This is good. > > PositionRow is a Pane subclass which renders a single html row showing > the Position information, so the RepeatingView will display a table of > Positions. > > > Now, as I understand it, Wicket will push PortfolioPage into the page > store. As a result it will serialize the PortfolioPane and so the > PortfolioModel. This model will be detached at some point and so have > a small memory footprint - only its ptfID. This is good. > > Now the bit I struggle with. As I have now added a whole collection > of PositionRow instances to the RepeatingView their Position instances > will now be serialized and saved. This seems to negate the trouble I > went to to make my PortfolioModel Loadable. > > I dont really want to have PositionRow have a LoadableModel as this will > simply cause a very inefficient row-by-row fetch of each Position from > the DB. The only approach that seems to work is to do this instead: > > for ( Portfolio ptf : getModelObject().getPositions() ) { > v.add( new PositionRow(model, ptf.getKey() ) ); > } > > so that I only need to save the key as the serializable state in > PositionRow. This would seem to work but it feels a bit convoluted > to me. As the model becomes more complex this approach starts to > become unmanageable and makes building reusable bits harder. > > > I hope my confusion is clear and someone can offer me a hint as to > what to do. Mmm, I suppose if you tell me that I don't understand the > serialization strategy used by Wicket, that might also sort me out. > > > Many thanks in advance - Steve > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org