如何让"p:remoteCommand"触发"p:ajaxStatus"?
How to make "p:remoteCommand" to trigger "p:ajaxStatus"?
存在以下问题:p:remoteCommand在页面加载后延迟加载p:dataTable,但在[=35]期间不显示"p:ajaxStatus"的加载指示器=] 请求...
如何让"p:ajaxStatus"在p:remoteCommand发送延迟加载数据请求时显示在页面上?
页面代码:
<h:form id="form">
<p:remoteCommand name="loadLazyData" action="#{crmBackingBean.crmOnControlLazyInit}" autoRun="true" process="@this" update="dtCrmOnControl" />
<p:dataTable id="dtCrmOnControl" var="rowData" value="#{crmBackingBean.crmOnControlLazy}" widgetVar="dtCrmOnControl" rows="#{crmBackingBean.crmDTonControlRows}" paginator="true" ..... lazy="true" >
.......................................................
</p:dataTable>
</h:form>
我用的是Atlas主题,p:ajaxStatus位于原来的位置,在template.xhtml:
<p:ajaxStatus style="width:40px; height:40px; position:fixed; right:30px; bottom:30px; z-index:999999;">
<f:facet name="start">
<i class="fa fa-circle-o-notch fa-spin Green Fs40"></i>
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
谢谢!
版本:PrimeFaces 6.0.2; PrimeFaces Atlas Theme 1.1.1; GlassFish 4.1.1 与 JSF 2.2.12 (Mojarra)
您似乎错过了一些基本定义。你的状态应该如何注意到有任何动作正在进行?此外,我想您希望在等待期间显示一个对话框并在 ajaxStatus
中配置其样式,对吗?
如果是这样,我建议您通过 <p:dialog>
创建一个自己的对话框,并将 onstart
和 onsuccess
属性添加到您的 ajaxStatus
中,如 Primefaces 展示中所述: http://www.primefaces.org/showcase/ui/ajax/status.xhtml
会是这样的
<p:ajaxStatus onstart="PF('statusDialog').show()" onsuccess="PF('statusDialog').hide()" />
<p:dialog widgetVar="statusDialog" modal="true" draggable="false" closable="false" resizable="false" showHeader="false">
<p:graphicImage name="waiting_picture.gif" />
</p:dialog>
您可以轻松地将此解决方案与数据表/分页器结合使用。
希望对您有所帮助!
编辑:为什么不定义每页的行数以支持延迟加载?
http://www.primefaces.org/showcase/ui/data/datatable/paginator.xhtml
编辑 2:您还可以在开始时调用 loadLazyData
方法:
<p:ajaxStatus onstart="loadLazyData" />
或类似这样的...
解决方法如下:
标签 <p:ajaxStatus>
应该放在 xhtml 源页面上的标签 <p:remoteCommand>
之前。
环境:
- PrimeFaces 6.0.2
- PrimeFaces Atlas 主题 1.1.1
- 带有 JSF 2.2.12 (Mojarra) 的 GlassFish 4.1.1
存在以下问题:p:remoteCommand在页面加载后延迟加载p:dataTable,但在[=35]期间不显示"p:ajaxStatus"的加载指示器=] 请求...
如何让"p:ajaxStatus"在p:remoteCommand发送延迟加载数据请求时显示在页面上?
页面代码:
<h:form id="form">
<p:remoteCommand name="loadLazyData" action="#{crmBackingBean.crmOnControlLazyInit}" autoRun="true" process="@this" update="dtCrmOnControl" />
<p:dataTable id="dtCrmOnControl" var="rowData" value="#{crmBackingBean.crmOnControlLazy}" widgetVar="dtCrmOnControl" rows="#{crmBackingBean.crmDTonControlRows}" paginator="true" ..... lazy="true" >
.......................................................
</p:dataTable>
</h:form>
我用的是Atlas主题,p:ajaxStatus位于原来的位置,在template.xhtml:
<p:ajaxStatus style="width:40px; height:40px; position:fixed; right:30px; bottom:30px; z-index:999999;">
<f:facet name="start">
<i class="fa fa-circle-o-notch fa-spin Green Fs40"></i>
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
谢谢!
版本:PrimeFaces 6.0.2; PrimeFaces Atlas Theme 1.1.1; GlassFish 4.1.1 与 JSF 2.2.12 (Mojarra)
您似乎错过了一些基本定义。你的状态应该如何注意到有任何动作正在进行?此外,我想您希望在等待期间显示一个对话框并在 ajaxStatus
中配置其样式,对吗?
如果是这样,我建议您通过 <p:dialog>
创建一个自己的对话框,并将 onstart
和 onsuccess
属性添加到您的 ajaxStatus
中,如 Primefaces 展示中所述: http://www.primefaces.org/showcase/ui/ajax/status.xhtml
会是这样的
<p:ajaxStatus onstart="PF('statusDialog').show()" onsuccess="PF('statusDialog').hide()" />
<p:dialog widgetVar="statusDialog" modal="true" draggable="false" closable="false" resizable="false" showHeader="false">
<p:graphicImage name="waiting_picture.gif" />
</p:dialog>
您可以轻松地将此解决方案与数据表/分页器结合使用。
希望对您有所帮助!
编辑:为什么不定义每页的行数以支持延迟加载? http://www.primefaces.org/showcase/ui/data/datatable/paginator.xhtml
编辑 2:您还可以在开始时调用 loadLazyData
方法:
<p:ajaxStatus onstart="loadLazyData" />
或类似这样的...
解决方法如下:
标签 <p:ajaxStatus>
应该放在 xhtml 源页面上的标签 <p:remoteCommand>
之前。
环境:
- PrimeFaces 6.0.2
- PrimeFaces Atlas 主题 1.1.1
- 带有 JSF 2.2.12 (Mojarra) 的 GlassFish 4.1.1