【问题标题】:datatable loading image customization for ajax calls of column filtering用于列过滤的ajax调用的数据表加载图像定制
【发布时间】:2014-07-21 03:36:49
【问题描述】:
我也在使用 primefaces datatable 进行列过滤和全局过滤。
在我们的应用程序中,我们使用自定义<p:ajaxStatus> 来捕获所有ajax 调用并显示"Please wait.." 消息,直到请求完成。它阻塞了整个 UI。
这完美匹配除了我要描述的场景之外的所有场景。
我想在数据表中进行特定于列的过滤,如果我输入一些文本,则会触发 ajax 调用,并且屏幕被带有消息 "Please wait.."
的自定义 ajax 对话框阻止
但我不希望这个特定的 ajax 调用被全局 ajax 所困。如果我们使用属性global="false",那么它将不会执行全局ajax。
但在数据表中,我不能将<p:column > 中的global="false" 作为属性。
在这种情况下,我只想在右下角向他展示一个加载图像,就像所有数据表过滤一样。检查以下链接我想如何实施。
Data Table Filter demo
在上面的示例代码中没有提供。那么我该如何实现呢?
任何想法都受到高度赞赏。
【问题讨论】:
标签:
ajax
jsf
primefaces
datatable
【解决方案1】:
为了捕获所有 ajax 请求,我们在主布局页面中定义了<p:ajaxStatus>。
这会捕获所有 ajax 请求。
因此,为了克服这个问题,我在包含的页面中定义了相同的布局页面,并删除了自定义的 <p:ajaxStatus>,它会阻止完整的 UI。布局页面有问题的代码:
<div id="container">
<div id="content">
<ui:insert name="content" />
</div>
<ui:insert name="dialog">
</ui:insert>
</div>
在包含的页面中,我们将内容定义为
<ui:define name="content">
<h1>Test Application</h1>
</ui:define>
解决方案
<p:ajaxStatus style="width:64px;height:64px;position:fixed;right:5px;bottom:5px">
<f:facet name="start">
<p:graphicImage name="loading.gif" library="images"></p:graphicImage>
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
<div id="container">
<div id="content">
<ui:insert name="content" >
<h1> Test Application </h1>
</ui:insert>
</div>
</div>
因此,来自此页面的任何 ajax 请求都将被此页面中定义的自定义捕获。
这对我帮助很大。
希望对你有帮助