If you're optimizing for optimization's sake, spend your time optimizing where it is worth optimizing.
-- Jeremy Thomerson http://www.wickettraining.com On Wed, May 27, 2009 at 6:04 PM, J.-F. Rompre <[email protected]> wrote: > I am optimizing for optimizing's sake - is there built-in efficiency that > prevents duplicate rendering for component instances of the same type with > different markup ids? > > Thanks, > > JF > > On Wed, May 27, 2009 at 6:04 PM, Martijn Dashorst < > [email protected]> wrote: > >> You don't. Did a profiler tell you that this is a hotspot? Or are you >> optimizing for optimizing's sake? >> >> Martijn >> >> On Wed, May 27, 2009 at 9:53 PM, J.-F. Rompre <[email protected]> wrote: >> > I am trying to do something that should be easy to do, and may already >> be >> > available from the API (I am still usin 1.3.5). >> > >> > How can one duplicate rendered strings? >> > >> > In other words, I am trying to render once but copy a number of times >> for >> > better performance - e.g., putting a page navigator both at the top and >> > bottom of the list (the bottom is simply a label generated from copying >> the >> > rendered top one) or something more complex such as a calendar. >> > >> > I tried using IBehavior.onRendered to copy getResponse.toString() for >> later >> > reuse, but myComponent.renderComponent() throws IllegalStateException: >> Page >> > not found - even though I am adding the component to a panel as >> instructed >> > by Component.renderComponent() - any ideas? My code is below. >> > >> > I also thought of overriding one of the rendering methods to write >> directly >> > to the response, but Component.renderXXX() methods are all final - there >> > has to be a way to do this simply. >> > >> > Any ideas? >> > >> > Thanks! >> > JF >> > >> > The containing panel java (groovy) code - 'ppn' is the component we want >> to >> > render only once >> > .....//ProductPanel >> > //... >> > productsContainer.add( products ) >> > ProductsPagingNavigator ppn = new ProductsPagingNavigator( >> > "productsPagerTop", products) >> > ppn.add( new MakeRenderedStringBehavior()) >> > >> > productsContainer.add( ppn) >> > ppn.renderComponent() //THOWS 'Page not found..." exc. >> > //save the rendering for reuse >> > CharSequence ppnOut = ppn.getRendered() >> > //reuse it here >> > productsContainer.add new Label( "productsPagerBottom", ppnOut) >> > //.... >> > >> > //*********************************** >> > The Behavior code attached to ppn above: >> > .....// MakeRenderedStringBehavior >> > //... >> > public void onRendered(final Component component) >> > { >> > //.... >> > // Copy the rendering if this component can store it.. >> > CharSequence output = response.toString(); >> > if ( component instanceof IRenderedString ) >> > ((IRenderedString )component ).setRendered( output); >> > webResponse.write(output); >> > } >> > //.... >> > //************************************* >> > The containing ProductPanel markup: >> > <wicket:panel >> > .... >> > <div class="Products" wicket:id="products" id="" >> > <div wicket:id="productsPagerTop" class="Navigation"</div <!-- >> > rendered -- >> > <ul >> > <li wicket:id="productsList" id="" >> > ... >> > </div</li >> > </ul >> > <div wicket:id="productsPagerBottom" class="Navigation"</div <!-- >> > pasted in-- >> > </div >> > </wicket:panel >> > >> >> >> >> -- >> Become a Wicket expert, learn from the best: http://wicketinaction.com >> Apache Wicket 1.3.5 is released >> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > > -- > JF > "Borrow money from pessimists - they don't expect it back." -- Steven Wright > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
