Hi all, having some trouble using a PartialMarkupRendererFilter. It's supposed to check a service and add a script if the service isn't dequeued. However the renderMarkup is not getting run. Nothing is ever logged from the filter. I'm looking for help on diagnosing why the partial markup renderer filter isn't getting run.
I can watch the PMR Filter being added inside a component via this: private void setupRender() { if(request.isXHR()) { log.debug("ConditionalAjaxSequenceRunFilter added"); final ConditionalAjaxSequenceRunFilter conditionalAjaxSequenceRunFilter = new ConditionalAjaxSequenceRunFilter(renderSupport,ajaxService); pageRenderQueue.addPartialMarkupRendererFilter(conditionalAjaxSequenceRunFilter); } } And the code for the ConditionalAjaxSequenceFilter and it's parent: public class ConditionalAjaxSequenceRunFilter extends RenderSupportAjaxFilter { private final static Logger log = LoggerFactory.getLogger(ConditionalAjaxSequenceRunFilter.class); private AjaxService ajaxService; public ConditionalAjaxSequenceRunFilter(final RenderSupport renderSupport, final AjaxService ajaxService) { super(renderSupport); this.ajaxService = ajaxService; } @Override public void renderMarkup(final MarkupWriter writer, final JSONObject reply, final PartialMarkupRenderer renderer) { if(this.ajaxService.hasMoreTasksQueued()) { log.debug("Ajax tasks are queued, firing AjaxServiceSequenceRun to trigger a nop"); addInit("AjaxServiceSequenceRun"); } super.renderMarkup(writer, reply, renderer); } } public class RenderSupportAjaxFilter implements PartialMarkupRendererFilter { private final RenderSupport renderSupport; private Collection<Operation> ops = new ArrayList<Operation>(); public RenderSupportAjaxFilter(final RenderSupport renderSupport) { this.renderSupport = renderSupport; } public void addInit(final String script, final String... args) { ops.add(new Operation() { @Override public void run() { renderSupport.addInit(script,args); } }); } public void addInit(final String script, final JSONArray args) { ops.add(new Operation() { @Override public void run() { renderSupport.addInit(script,args); } }); } public void addScript(final String script) { ops.add(new Operation() { @Override public void run() { renderSupport.addScript(script); } }); } @Override public void renderMarkup(final MarkupWriter writer, final JSONObject reply, final PartialMarkupRenderer renderer) { renderer.renderMarkup(writer, reply); for(Operation op : ops) { op.run(); } } /** * Dummy interface for operations RenderSupportAjaxFilter can run */ private interface Operation extends Runnable { } } Hoping someone can point out something obvious with why this might not run? The request is an XHR which will get a MultiZoneUpdate. I've used the RenderSupportAjaxFilter elsewhere, by itself, and it's worked fine, but I'm not seeing the renderMarkup method ever get called in ConditionalAjaxSequenceRunFilter inspite of it being added to the PageRenderQueue. Help! rektide --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org