如何添加进度消息,例如"获取数据"务实。当获取数据时,我需要在空白页面上显示此消息。我是ADF的新手,所以请原谅我,如果它是一些非常基本的东西。我无法在网上找到它。
答案 0 :(得分:2)
您可以在页面或页面碎片中使用javascript。我的示例使用页面片段,因此弹出窗口的id必须包含该区域。如果您无法找到正确的ID,可以从任何浏览器查找,使用View Source,并搜索您给它的名称(在本例中为splashPopup)。
<af:resource type="javascript">
function enforcePreventUserInput(evt) {
var popup = AdfPage.PAGE.findComponentByAbsoluteId('pt1:r1:0:splashPopup');
if (popup != null) {
AdfPage.PAGE.addBusyStateListener(popup, handleBusyState);
evt.preventUserInput();
}
}
function handleBusyState(evt) {
var popup = AdfPage.PAGE.findComponentByAbsoluteId('pt1:r1:0:splashPopup');
if (popup != null) {
if (evt.isBusy()) {
popup.show();
}
else if (popup.isPopupVisible()) {
popup.hide();
AdfPage.PAGE.removeBusyStateListener(popup, handleBusyState);
}
}
}
</af:resource>
pageFragment中的弹出窗口。它显示旋转圆的简单gif动画。如果你需要谷歌,你可以找到许多其他动画。
<af:popup id="p1" contentDelivery="immediate">
<af:dialog id="d2" type="none" closeIconVisible="false" title="Loading">
<af:panelGroupLayout id="pgl5" layout="vertical" halign="center">
<af:image source="/images/loading.gif" shortDesc="Loading data..." id="i1"/>
</af:panelGroupLayout>
</af:dialog>
</af:popup>
现在,我认为您需要在按下按钮或图像链接后,在长时间运行的查询或其他一些长时间运行的过程中显示弹出窗口。为此,您必须在组件上定义一个clientListener,它使用上面定义的javascript方法。
<af:commandImageLink text="Test LongRunning Query" id="cil1" icon="/icons/excel.jpg"
action="#{myBean.doStuff}"
<af:clientListener method="enforcePreventUserInput" type="action">
</af:clientListener>
</af:commandImageLink>
答案 1 :(得分:1)
如果您有一个长时间运行的方法调用,那么您可以在页面加载
上调用该方法<af:serverListener type="onloadEvent"
method="#{backingBeanScope.initBean.callMethod}"/>
<af:clientListener type="load" method="triggerOnLoad"/>
<af:resource type="javascript">
function triggerOnLoad(event)
{
AdfCustomEvent.queue(event.getSource(), "onloadEvent", {},false);
return true;
}
</af:resource>
然后使用adf状态指示器显示页面上的状态。
<af:panelStretchLayout id="psl1" startWidth="33%" endWidth="33%"
topHeight="33%" bottomHeight="33%">
<f:facet name="bottom"/>
<f:facet name="center">
<af:statusIndicator id="si1"/>
</f:facet>
<f:facet name="start">
<af:panelGroupLayout id="pgl2"/>
</f:facet>
<f:facet name="end">
<af:panelGroupLayout id="pgl3"/>
</f:facet>
<f:facet name="top">
<af:panelGroupLayout id="pgl4"/>
</f:facet>
</af:panelStretchLayout>
有关更多详细信息,请参阅此博客文章 Show status indicator for long running method calls - ADF