Adam,

Great to finally meet face-to-face at JavaOne.  During our conversation we
talked about PPR performance and how we could make some optimizations.  One
suggestion you had was to implement a naming container that didn't render
its children during a PPR request, unless one of its children was registered
for ppr update.  I've implemented this and it *seems* to be working fine.
However, I just wanted to double-check if this approach wouldn't interfere
with the saved state of the component model or any other area of the
framework?  The code  implemented is below.

Thanks,

Danny

   boolean renderChildren = true;

   if (RequestContext.getCurrentInstance().isPartialRequest(context))
   {

     if (_LOG.isInfo())
       _LOG.info("Checking partialZone: " + component.getClientId
(context));

     // Default to not render during PPR...
     renderChildren = false;
     for (Iterator iter = RenderingContext.getCurrentInstance()
         .getPartialPageContext().getPartialTargets(); iter.hasNext();)
     {
       String partialTarget = (String) iter.next();

       if (partialTarget.startsWith(component.getClientId(context)))
       {
         // ...Unless the container has a ppr registered child
         renderChildren = true;
         if (_LOG.isInfo())
           _LOG.info("Target found, container will render. Target: " +
component.getClientId(context));
         break;
       }
     }
   }

   if (renderChildren)
     super.encodeChildren(context, component);


--
Chordiant Software Inc.
www.chordiant.com

Reply via email to