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

Reply via email to