code: private void paintContainerResponse(final RenderContext renderContext,
  			final AjaxOperation operation) {
  		WebXmlRenderContext webRenderContext = (WebXmlRenderContext) renderContext;
  		XmlStringBuilder xml = webRenderContext.getWriter();
  
  		// Get trigger's context
  		ComponentWithContext trigger = AjaxHelper.getCurrentTriggerAndContext();
  		if (trigger == null) {
  			throw new SystemException("No context available for trigger " + operation.getTriggerId());
  		}
  
  		xml.appendTagOpen("ui:ajaxtarget");
  		xml.appendAttribute("id", operation.getTargetContainerId());
  		xml.appendAttribute("action", AjaxOperation.AjaxAction.REPLACE_CONTENT.getDesc());
  		xml.appendClose();
  
  		// Paint targets - Assume targets are in the same context as the trigger
  		UIContextHolder.pushContext(trigger.getContext());
  		try {
  			for (String targetId : operation.getTargets()) {
  				ComponentWithContext target;
  				if (targetId.equals(operation.getTriggerId())) {
  					target = trigger;
  				} else {
  					target = WebUtilities.getComponentById(targetId, true);
  					if (target == null) {
  						LOG.warn("Could not find ajax target to render [" + targetId + "]");
  						continue;
  					}
  				}
  				target.getComponent().paint(renderContext);
  			}
  		} finally {
  			UIContextHolder.popContext();
  		}
  
  		xml.appendEndTag("ui:ajaxtarget");
  	}
docs: Paint the ajax container response.
  
  @param renderContext the render context
  @param operation the ajax operation