Индикатор загрузки jsf / primefaces во время инициализации компонента
В моем проекте JSF / Primefaces у меня много загрузки данных в методе init (postconstruct) моих bean-компонентов. Вот почему я хотел бы показать индикатор GIF во время загрузки бобов.
Я пробовал с простыми лицами и статусом Ajax (программная версия витрины)
http://www.primefaces.org/showcase/ui/ajaxStatusScript.jsf
Поэтому я добавил это в шаблон моего проекта
<p:dialog modal="true" widgetVar="loadWidget" header="Status"
draggable="false" closable="false">
<p:graphicImage value="../images/ajaxload.gif" />
</p:dialog>
Я хотел бы иметь возможность позвонитьloadWidget.show();
в начале метода init моего бина иloadWidget.hide();
в конце.
У вас есть идея, где и как запустить JavaScript, чтобы отобразить загрузочный GIF? Спасибо
РЕДАКТИРОВАТЬ
Я мог бы добавить, что я попробовал это. Вот часть моего шаблона, которая включает в себя содержание страницы. Он не работает ни в диалоге p: ни до, ни после содержимого.
<div class="content">
<script>loadWidget.show();</script>
<ui:insert name="body" />
<script>loadWidget.hide();</script>
</div>
Консоль говоритloadWidget is not defined
EDIT2
Я постараюсь объяснить, как работает мой проект. Может быть полезно
Вот мой шаблон
<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>
Тогда каждая страница определяетbody
, Пример страницы.
<html ... >
<ui:composition template="myTemplateAbove">
<ui:define name="body">
<h:outputText value="#{beanOfMyFirstPage.myText}" />
<p:commandButton action="#{beanOfMyFirstPage.goToAnotherPage}" />
...
</ui:define>
</ui:composition>
</html>
Затем каждая страница связывается с bean-компонентом, расширяющим 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
}
И обыкновенный боб
public class BaseBean {
@PostConstruct
public void init() {
super.init();
// General actions for all beans
}
}