JSF Extensions brings first class support for AJAX to JSF. This is achieved by declaring an override for the javax.faces.ViewRoot component-type. The implementation for this class extends UIViewRoot and allows for lifecycle processing over one or more subtrees of the view, depending on client requirements. Custom JSF Lifecycle and StateManager implementations are provided to support the UIViewRoot subclass in its processing. These decorate their respectieve default implementations and add a small amount of functionality to support AJAX.

The principal classes for supporting AJAX include:

{@link com.sun.faces.extensions.avatar.components.PartialTraversalViewRoot}

Extend UIViewRoot and allow for partial view processing.

{@link com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle}

Decorate the default lifecycle and take special case action when an AJAX request is detected. Otherwise, the default lifecycle is used.

{@link com.sun.faces.extensions.avatar.lifecycle.AsyncResponse}

ThreadLocal accessible class for interacting with the AJAX response as it is being created.

{@link com.sun.faces.extensions.avatar.application.DeferredStateManager}

Decorate the default StateManager to take no action during an AJAX request. This is necessary because the state saving is initiated in the PartialTraversalLifecycle.

{@link com.sun.faces.extensions.avatar.event.EventCallback}

javax.faces.components.ContextCallback implementation that allows the client to send events to the JSF view.

{@link com.sun.faces.extensions.avatar.components.ScriptsComponent}

Renders necessary script elements in the browser. Exposed via custom tag.