Ladeanzeige für jsf / primefaces während der Initialisierung der Bean

In meinem JSF / Primefaces-Projekt werden viele Daten in die init-Methode (Postkonstruktionsmethode) meiner Beans geladen. Aus diesem Grund möchte ich während des Ladens der Bohnen einen GIF-Indikator anzeigen.

Ich habe es mit Primefaces und dem Ajax-Status versucht (programmatische Version des Showcase)

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

Also habe ich dies zur Vorlage meines Projekts hinzugefügt

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

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

Ich würde gerne anrufen könnenloadWidget.show(); am anfang der init methode meiner bean undloadWidget.hide(); Am Ende.

Haben Sie eine Idee, wo und wie Sie das Javascript aktivieren, um das Lade-GIF anzuzeigen? Vielen Dank

BEARBEITEN

Ich könnte hinzufügen, dass ich das ausprobiert habe. Hier ist der Teil meiner Vorlage, der den Inhalt der Seite enthält. Es funktioniert weder vor noch nach dem Inhalt des p: -Dialogs.

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

Die Konsole sagtloadWidget is not defined

EDIT2

Ich werde versuchen zu erklären, wie mein Projekt funktioniert. Könnte hilfreich sein.

Hier ist meine Vorlage

<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>

Dann definiert jede Seite diebody. Beispiel einer Seite.

<html ... >

<ui:composition template="myTemplateAbove">

    <ui:define name="body">

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

</html>

Dann wird jede Seite mit einer Bean verknüpft, die eine BaseBean erweitert.

@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
}

Und die gemeine Bohne

public class BaseBean {

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

}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage