Example usage for org.apache.wicket Component afterRender

List of usage examples for org.apache.wicket Component afterRender

Introduction

In this page you can find the example usage for org.apache.wicket Component afterRender.

Prototype

final void afterRender() 

Source Link

Document

Called on every component after the page is rendered.

Usage

From source file:com.wiquery.plugins.jqgrid.component.XMLDataRequestTarget.java

License:Apache License

/**
 * // w  w  w  . j a va  2s . c om
 * @param response
 * @param markupId
 *            id of client-side dom element
 * @param component
 *            component to render
 */
private void respondComponent(final Response response, final String markupId, final Component component,
        StringBuffer writer) {
    if (component.getRenderBodyOnly() == true) {
        throw new IllegalStateException(
                "Ajax render cannot be called on component that has setRenderBodyOnly enabled. Component: "
                        + component.toString());
    }

    component.setOutputMarkupId(true);

    // substitute our encoding response for the real one so we can capture
    // component's markup in a manner safe for transport inside CDATA block
    final Response originalResponse = response;
    encodingBodyResponse.reset();
    RequestCycle.get().setResponse(encodingBodyResponse);

    // Initialize temporary variables
    final Page page = component.findParent(Page.class);
    if (page == null) {
        // dont throw an exception but just ignore this component, somehow
        // it got
        // removed from the page.
        // throw new IllegalStateException(
        // "Ajax request attempted on a component that is not associated
        // with a Page");
        LOG.debug("component: " + component + " with markupid: " + markupId
                + " not rendered because it was already removed from page");
        return;
    }

    page.startComponentRender(component);

    try {
        component.prepareForRender();

        // render any associated headers of the component
        respondHeaderContribution(response, component, writer);
    } catch (RuntimeException e) {
        try {
            component.afterRender();
        } catch (RuntimeException e2) {
            // ignore this one could be a result off.
        }
        // Restore original response
        RequestCycle.get().setResponse(originalResponse);
        encodingBodyResponse.reset();
        throw e;
    }

    try {
        component.renderComponent();
    } catch (RuntimeException e) {
        RequestCycle.get().setResponse(originalResponse);
        encodingBodyResponse.reset();
        throw e;
    }

    page.endComponentRender(component);

    // Restore original response
    RequestCycle.get().setResponse(originalResponse);

    writer.append("<component id=\"");
    writer.append(markupId);
    writer.append("\" ");
    if (encodingBodyResponse.isContentsEncoded()) {
        writer.append(" encoding=\"");
        writer.append(getEncodingName());
        writer.append("\" ");
    }
    writer.append("><![CDATA[");
    writer.append(encodingBodyResponse.getContents());
    writer.append("]]></component>");

    encodingBodyResponse.reset();
}

From source file:sf.wicklet.gwt.server.ajax.impl.GwtAjaxWickletResponse.java

License:Apache License

@Override
protected void writeComponent(final Response response, final String markupId, final Component component,
        final String encoding) {
    if (component.getRenderBodyOnly() == true) {
        throw new IllegalStateException(
                "Ajax render cannot be called on component that has setRenderBodyOnly enabled. Component: "
                        + component.toString());
    }// ww w.  jav a 2  s  . c  o m
    component.setOutputMarkupId(true);
    // substitute our encoding response for the real one so we can capture
    // component's markup in a manner safe for transport inside CDATA block
    encodingBodyResponse.reset();
    RequestCycle.get().setResponse(encodingBodyResponse);
    // Initialize temporary variables
    final Page page = component.findParent(Page.class);
    if (page == null) {
        // dont throw an exception but just ignore this component, somehow
        // it got removed from the page.
        AbstractGwtAjaxResponse.LOG.debug("component: " + component + " with markupid: " + markupId
                + " not rendered because it was already removed from page");
        return;
    }
    page.startComponentRender(component);
    try {
        component.prepareForRender();
        // render any associated headers of the component
        writeHeaderContribution(response, component);
    } catch (final RuntimeException e) {
        try {
            component.afterRender();
        } catch (final RuntimeException e2) {
            // ignore this one could be a result off.
        }
        // Restore original response
        RequestCycle.get().setResponse(response);
        encodingBodyResponse.reset();
        throw e;
    }
    try {
        component.render();
    } catch (final RuntimeException e) {
        RequestCycle.get().setResponse(response);
        encodingBodyResponse.reset();
        throw e;
    }
    page.endComponentRender(component);
    // Restore original response
    RequestCycle.get().setResponse(response);
    response.write("<component id=\"");
    response.write(markupId);
    response.write("\" ");
    //        if (encodingBodyResponse.isContentsEncoded()) {
    //            response.write(" encoding=\"");
    //            response.write(getEncodingName());
    //            response.write("\" ");
    //        }
    response.write(" encoding=\"escaped-xml\" >");
    response.write(XmlUtil.escXml(encodingBodyResponse.getContents()));
    response.write("</component>");
    encodingBodyResponse.reset();
}