Indicador de carga jsf / primefaces durante el inicio del bean

En mi proyecto JSF / Primefaces, tengo muchos datos cargando en el método init (postconstruct) de mis beans. Es por eso que me gustaría mostrar un indicador GIF durante la carga del bean.

Probé con primefaces y el estado Ajax (versión programática del escaparate)

http://www.primefaces.org/showcase/ui/ajaxStatusScript.jsf

Así que agregué esto a la plantilla de mi proyecto.

<p:dialog modal="true" widgetVar="loadWidget" header="Status"
    draggable="false" closable="false">

    <p:graphicImage value="../images/ajaxload.gif" />
</p:dialog>

Me gustaría poder llamarloadWidget.show(); al comienzo del método init de mi frijol yloadWidget.hide(); al final.

¿Tienes una idea de dónde y cómo disparar el javascript para mostrar el gif de carga? Gracias

EDITAR

Podría añadir que intenté esto. Aquí está la parte de mi plantilla que incluye el contenido de la página. No está funcionando o el diálogo p: se incluye antes o después del contenido.

<div class="content">
    <script>loadWidget.show();</script>
        <ui:insert name="body" />
    <script>loadWidget.hide();</script>
</div>

La consola diceloadWidget is not defined

EDIT2

Intentaré explicar cómo funciona mi proyecto. Podría ser útil

Aquí está mi plantilla

<html ... >

<f:view contentType="text/html">

    <h:head> ... </head>

    <h:body>
        <ui:insert name="header" />
        <ui:insert name="menu" />
        <ui:insert name="body" />
        <ui:insert name="footer" />
        ... <!-- Other things -->
    </h:body>
</f:view>   
</html>

Entonces cada página define labody. Ejemplo de una página.

<html ... >

<ui:composition template="myTemplateAbove">

    <ui:define name="body">

            <h:outputText value="#{beanOfMyFirstPage.myText}" />
            <p:commandButton action="#{beanOfMyFirstPage.goToAnotherPage}" />
            ...
        </ui:define>
</ui:composition>

</html>

Luego, cada página está vinculada a un bean que extiende un BaseBean.

@ManagedBean(name = "beanOfMyFirstPage")
@ViewScoped
public class beanOfMyFirstPage extends BaseBean {
    // attributes + getters and setters

    @PostConstruct
    public void init() {
        super.init();
        ... // actions that take time cause of DB requests for example
    }

    public void goToAnotherPage() {
        navigation.handleNavigation(FacesContext.getCurrentInstance(), null, "mySecondPage");
    }

    // methods
}

Y el frijol comun

public class BaseBean {

    @PostConstruct
    public void init() {
        super.init();
        // General actions for all beans
    }

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta