如何在 JSF 上延迟 Primefaces AjaxStatus?

     2023-02-22     190

关键词:

【中文标题】如何在 JSF 上延迟 Primefaces AjaxStatus?【英文标题】:How to delay Primefaces AjaxStatus on JSF? 【发布时间】:2016-10-13 11:17:18 【问题描述】:

如何在 Primefaces 的 AjaxStatus 显示时添加延迟(例如 300 毫秒)。现在,当有一个 Ajax 请求挂起时,它总是立即显示。这对于例如“onkeyUp”事件来说是很麻烦的,因为每次击键都会在瞬间打开加载对话框。

这是我的 AjaxStatus 加载指示器组件:

<p:ajaxStatus id="startAjax" onstart="PF('start').show();" oncomplete="PF('start').hide();" >
</p:ajaxStatus>

<p:dialog widgetVar="start" showHeader="false" resizable="false">
    <h:graphicImage value="#resource['/images/loading.gif']"></h:graphicImage>
</p:dialog>

【问题讨论】:

您可以使用 primefaces 扩展 &lt;pe:timer&gt; 并从定时器调用 ajaxStatus 或 onShow 属性在 &lt;p:dialog&gt; 中可用,从那里调用定时器,它不会做任何事情,只是等待然后控制将返回将显示对话框和 ajaxStatus。 @techipank,pe:timer 似乎已被弃用。我将 Primefaces Extensions 添加到 maven 依赖项和命名空间 xmlns:pe="primefaces.org/ui/extensions" 和 pe: 仅提供时间线和时间选择器组件。没有计时器。也许 也合适 使用您自己的 Javascript 函数:onstart="myStart('start')" 并在 function myStart(pfo) 中使用 window.setTimeout() 调用 PF(pfo).show() @holger 是对的。所有纯 JavaScript。与 ajax、jsf 或 PrimeFaces 无关 【参考方案1】:

你需要用一个函数来包装你的 PF('start').start() ,这个函数会延迟调用它。此外,onComplete 处理程序应检查您是否有待显示和取消它们的状态。这是为了避免ajax在状态显示之前完成的情况。

代码应该是这样的(未经测试)

<p:ajaxStatus id = "startAjax" onstart = "startHandler();" oncomplete = "endHandler();"/>
    <script>
        var ajaxInProgress;
        function startHandler() 
            ajaxInProgress = setTimeout(function () 
                if(ajaxInProgress)
                   PF('start').show();
                
            , 3000);
        
        function endHandler() 
            clearTimeout(ajaxInProgress);
            PF('start').hide();
            ajaxInProgress = null;
        
    </script>

【讨论】:

谢谢。我会试试这个,看看你的答案是否正确。 是的,它有效。 400 毫秒似乎是我的应用程序的最佳时间。【参考方案2】:

我提交了PF 7.1 +的本土属性的PR。

https://github.com/primefaces/primefaces/pull/5138

感谢您的建议!

【讨论】:

在 SelectOnemenu 上重置 JSF Primefaces 输入值

】在SelectOnemenu上重置JSFPrimefaces输入值【英文标题】:JSFPrimefacesinputvaluesresetuponSelectOnemenu【发布时间】:2021-03-0310:03:37【问题描述】:在手动选择selectOneMenuid="format"的值时重置输入的输入值selectOneMenuid="format"的渲染效果很好。但... 查看详情

jsf/primefaces-如何显示自定义验证器的消息,但不显示同一组件上的必需验证

我有一个使用PrimeFaces的JSF2实现。我使用的是<p:selectOneRadio/>组件。当用户在无线电组件中选择“否”时,我想显示自定义消息。我已经为此创建了一个自定义验证器,并且与消息组件一起工作正常。但是,该组件也是必需的... 查看详情

如何在 Primefaces+JSF2 中显示用户点击的 url

】如何在Primefaces+JSF2中显示用户点击的url【英文标题】:HowCanishowurlsclickedbyuserinPrimefaces+JSF2【发布时间】:2012-09-2712:36:14【问题描述】:我正在使用带有Prime面孔的JSF2。我想显示用户在每个页面中点击的所有以前的链接或URL。我... 查看详情

在 PrimeFaces 中添加 Angular Js - JSF

】在PrimeFaces中添加AngularJs-JSF【英文标题】:AddAngularJsinPrimeFaces-JSF【发布时间】:2016-07-2719:11:45【问题描述】:我已经有一个带有PrimeFaces的JSF项目,但现在我需要在我的项目中添加Angularjs。有primefaces的标签所以我不知道如何使... 查看详情

如何将 jsf PrimeFaces 转换为引导程序?

】如何将jsfPrimeFaces转换为引导程序?【英文标题】:howtoconvertjsfPrimeFacesintobootstrap?【发布时间】:2015-10-0617:48:47【问题描述】:如何将javaserverfaceprimeface转换为bootstrap?该项目已经在java服务器端开发。我需要更改视图响应。【... 查看详情

延迟加载和解析 PrimeFaces JavaScript 文件

】延迟加载和解析PrimeFacesJavaScript文件【英文标题】:DeferloadingandparsingofPrimeFacesJavaScriptfiles【发布时间】:2014-06-0402:46:07【问题描述】:在使用GooglePageSpeed分析JSF2.1+PrimeFaces4.0webapp的性能时,它建议延迟解析JavaScript文件。在带有... 查看详情

JSF/Primefaces 如何将另一个域中的 .xhtml 包含到您的 .xhtml 中

】JSF/Primefaces如何将另一个域中的.xhtml包含到您的.xhtml中【英文标题】:JSF/PrimefacesHowtoincludean.xhtmlfromanotherdomainintoyour.xhtml【发布时间】:2013-06-0702:33:06【问题描述】:我正在尝试在我的.xhtml中包含另一个域(同一服务器上)上... 查看详情

从支持 Bean 刷新 JSF/PrimeFaces 接口

】从支持Bean刷新JSF/PrimeFaces接口【英文标题】:RefreshingaJSF/PrimeFacesinterfacefromthebackingBean【发布时间】:2015-04-3015:08:03【问题描述】:我的目标是使用JSF和/或PrimeFaces在网页上显示文本。文本由服务器端的进程实时更新。<?xmlvers... 查看详情

Primefaces 动态列不适用于延迟加载

】Primefaces动态列不适用于延迟加载【英文标题】:PrimefacesDynamiccolumnsnotworkingwithlazyloading【发布时间】:2014-12-2013:47:14【问题描述】:我正在使用PF5.0、JSF2.0(Mojarra)、SpringWebflow2.3。我在使用Datatable延迟加载时遇到了多个问题。a.)... 查看详情

在 JSF 2 / PrimeFaces 中使用正则表达式进行电子邮件验证

】在JSF2/PrimeFaces中使用正则表达式进行电子邮件验证【英文标题】:EmailvalidationusingregularexpressioninJSF2/PrimeFaces【发布时间】:2011-12-1401:50:59【问题描述】:我有一个包含电子邮件地址的输入字段:<h:inputTextvalue="#register.user.email... 查看详情

Primefaces FileUpload 事件未触发 - JSF 2.0

】PrimefacesFileUpload事件未触发-JSF2.0【英文标题】:PrimefacesFileUploadeventnotfiring-JSF2.0【发布时间】:2011-05-2206:24:17【问题描述】:我在Primefaces论坛上发布了我的问题,但没有人回复,所以我想我会在这里尝试。我一直在尝试让fileUp... 查看详情

Primefaces FileUpload 与 PrettyFaces 和 JSF 2.2.3

】PrimefacesFileUpload与PrettyFaces和JSF2.2.3【英文标题】:PrimefacesFileUploadwithPrettyFacesandJSF2.2.3【发布时间】:2013-12-2719:48:04【问题描述】:我在使用&lt;p:fileupload&gt;的页面上遇到了PrettyFaces的一些问题。当我在页面上禁用PrettyFaces... 查看详情

JSF Primefaces TabView 问题

】JSFPrimefacesTabView问题【英文标题】:JSFPrimefacesTabViewproblems【发布时间】:2012-02-2818:28:30【问题描述】:我在PF论坛上问过这个问题,但似乎没有人愿意回答,所以我想在这里碰碰运气。我有一个ui:repeat在TabView中的Ajax调用后没... 查看详情

如何将 PanelGrid 对齐到中心? JSF-Primefaces

】如何将PanelGrid对齐到中心?JSF-Primefaces【英文标题】:HowtoalignPanelGridtocenter?JSF-Primefaces【发布时间】:2013-03-1710:42:44【问题描述】:我知道有很多关于这个问题的问题,但没有一个适合我。我需要将PanelGrid对齐到中心(水平)... 查看详情

在 JSF 中使用 Primefaces 和 Bootstrap

】在JSF中使用Primefaces和Bootstrap【英文标题】:UsingPrimefacesandBootstrapinJSF【发布时间】:2015-02-1111:40:54【问题描述】:即使现在我在我的项目中使用了JSF+Primefaces,这给了我很多新的组件(来自primefaces)来工作。但是我的新客户需... 查看详情

在 PrimeFaces 3.4 JSF 2.0 中按 id 查找组件

】在PrimeFaces3.4JSF2.0中按id查找组件【英文标题】:findComponentbyidinPrimeFaces3.4JSF2.0【发布时间】:2015-07-1508:37:47【问题描述】:我想要一个在PrimeFaces3.4中通过id找到UIComponent的方法。我已经找到了一种方法来做到这一点,但它有一... 查看详情

JSF/PrimeFaces ajax 请求上的会话超时和 ViewExpiredException 处理

】JSF/PrimeFacesajax请求上的会话超时和ViewExpiredException处理【英文标题】:SessiontimeoutandViewExpiredExceptionhandlingonJSF/PrimeFacesajaxrequest【发布时间】:2012-06-2712:38:22【问题描述】:我发现这篇文章对非ajax请求很有用Howtohandlesessionexpiratio... 查看详情

如何从jsf / primefaces中的托管bean向页面添加组件[重复]

】如何从jsf/primefaces中的托管bean向页面添加组件[重复]【英文标题】:howtoaddacomponenttothepagefromamanagedbeaninjsf/primefaces[duplicate]【发布时间】:2014-01-2218:44:16【问题描述】:单击命令按钮应触发ManagedBean中的操作:将新的“outputText”... 查看详情