监控整页,非AJAX,要求通知

最近,在JSF中开发新图表和图表“导出服务”时,我遇到了一个非常普遍的问题。 当您执行长时间运行的任务(操作)时,您希望在开始时显示状态“请稍候……”对话框,并在响应到达时最后关闭此对话框。 对于AJAX请求,这不是问题,但对于将一些二进制内容流式传输到浏览器的非AJAX请求而言,则是有问题的。 为了解决此问题,我们可以使用与PrimeFaces中的FileDownload组件相同的技术。 我们可以设置一个特殊的cookie作为响应,并在客户端定期检查此cookie(如果已设置)。 设置此Cookie后,我们可以关闭打开的“之前”对话框。 可以在JSF中将cookie设置为:

// set cookie to be able to ask it and close status dialog for example
FacesContext.getCurrentInstance().getExternalContext().addResponseCookie("cookie.chart.exporting", "true", Collections.<String, Object>emptyMap());

Non AJAX按钮执行一个JavaScript函数(例如monitorExporting),它具有两个参数,这些参数代表在请求/响应生命周期的开始和结束时要调用的另一个JavaScript函数。

<p:commandButton value="Export to PNG" ajax="false" action="#{combiChartController.exportToPng}"onclick="monitorExporting(start, stop)"/>

PrimeFaces已经提供了一些方法来检查是否启用了cookie,以获取和删除它们。 所以,我们可以写

function monitorExporting(start, complete) {if(PrimeFaces.cookiesEnabled()) {if(start) {start();}window.chartExportingMonitor = setInterval(function() {var exportingComplete = PrimeFaces.getCookie('cookie.chart.exporting');if(exportingComplete === 'true') {if(complete) {complete();}clearInterval(window.chartExportingMonitor);PrimeFaces.setCookie('cookie.chart.exporting', null);}}, 150);}
}

使用setInterval(…)定期询问cookie。 功能开始显示“请稍候……”对话框,功能停止将其关闭。

<script type="text/javascript">
/* <![CDATA[ */function start() {statusDialog.show();}function stop() {statusDialog.hide();}
/* ]]> */
</script>

如果禁用了cookie,则当然不会显示任何内容,但是通常很少见。

参考: 监视整个页面,非AJAX,要求我们的JCG合作伙伴 Oleg Varaksin在“ 软件开发博客上的想法”中 得到通知 。

翻译自: https://www.javacodegeeks.com/2013/07/monitor-full-page-non-ajax-requests-to-be-notified.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...

用户图形界面设计与实现-监听事件System.applet.Applet(一)用户自定义成分1.绘制图形Public voit piant(Ghraphics g){ g.drawLine等图形名称(坐标1234);g.file图形名(坐标123)}2.设置字体-Font类(1)定义font&#xff1a;Font myfontnew Font(“字体”,”样式”,字号);例如&am…

Linux学习笔记006-启动流程

linux 启动流程 centos6 1.post 加电质检-->2.启动bios-->3.加载MBR-->4GRUB引导-->5.加载kernel-->6.设定启动级别-->7.加载rc.sysinit-->8.加载内核模块-->9.启动运行级别程序-->10.读取rc.local-->11.加载/bin/login 1.bios自检 2.读取bios记…

谈谈常用清除浮动的方法

我们在做页面布局的时候&#xff0c;经常需要利用浮动来实现一些布局效果&#xff0c;这样带来的后果就会导致父元素丢失宽度。今天我们就来说说‘找回‘宽度的方法。 而清除浮动后的效果应该是这样的请看&#xff1a; 下面就说说方法&#xff0c;方法其实有非常的多&#xf…

并行运行单元测试

大约是时候单元测试的开发人员能够使用批注在Parallel中运行测试。 在今天的博客文章中&#xff0c;我们将介绍如何使用Easytest提供的注释使传统的Junit测试并行运行。 易测 是在JUnit之上构建的测试框架&#xff0c;可让您轻松编写和维护测试。 它专注于为您的应用程序编写…

java 插件开发 互相依赖_java – Eclipse插件开发:有没有办法控制有关我的插件缺少依赖项的安装程序消息?...

我正在开发一个依赖于Eclipse平台4.2(Juno)的eclipse插件,并且不能安装在旧版本的eclipse上.当用户尝试在旧eclipse上安装我的插件(通过更新站点)时,Eclipse安装程序会阻止他并显示以下消息&#xff1a;Cannot complete the install because one or more required items could …

巧用CSS实现分隔线

下面是几种简单实现分隔线的方法&#xff0c;个人比较喜欢第二种&#xff0c;我也给出了最后第五种比较2的写法&#xff0c;请大家拍砖&#xff0c;或者提供其他好的方法。 单个标签实现分隔线&#xff1a; 点此查看实例展示 .demo_line_01{padding: 0 20px 0;margin: 20px 0;…

ArcGIS API For JS之网络分析(临近设施分析)

ArcGIS 提供两种网络分析&#xff0c;即基于Geometric Network的有向网络或者设施网络和基于Network Dataset的无向网络&#xff0c;在这里网络的分析指后者&#xff0c;ArcGIS api支持网络分析中的最短路径分析、服务区分析、临近设施分析。本文主要讲的是临近设施分析&#x…

UWP DEP0700: 应用程序注册失败。[0x80073CF9] 另一个用户已安装此应用的未打包版本。当前用户无法将该版本替换为打包版本。...

最近电脑抽风&#xff0c;我在【应用程序和功能】中重置了以下我的App自然灾害&#xff0c;居然&#xff0c;搞出大新闻了。 它居然从列表中消失了。。。 vs再次编译代码的时候&#xff0c;提示 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 DEP…

泽西岛的RESTful Web服务

我已经讨论了有关体系结构注意事项<< link >>的早期文章&#xff0c;以成为可在我的系统/机器上使用的分布式环境上的RESTful系统。 本文我们将讨论如何基于REST体系结构考虑来构建Web服务。 本教程说明了如何使用Tomcat 6&#xff0c;Eclipse和Jersey JAX-RS&…

java swing是什么意思英语_swing是什么意思_swing翻译_读音_用法_翻译

vipkid提供swing是什么意思、swing英语单词推荐、swing英语解释、swing相关词、swing英语短语英音 [swɪŋ] 美音 [swɪŋ]【中文释义】vt.& vi. (使)摇摆;(使)摇荡;n. 摇摆&#xff0c;摆动;摆程&#xff0c;振幅;秋千;音律;vt. 使旋转;使做曲线运动;挥舞;悬吊;vi. 悬摆;迅…

css水平垂直居中(绝对定位居中)

使用绝对定位有个限制就是父集必须设置一个固定的高度。 首先HTML 1 <div id"box"> 2 <div class"child"></div> 3 </div> CSS 1 #box {2 position: relative;3 height: 500px;4 background: red;5 }6 .chil…

Servlet3.0的文件上传功能

在Servlet3.0之前&#xff0c;文件上传需要借助于第三方插件&#xff0c;在Servlet3.0之后&#xff0c;Servlet本身开始支持文件上传功能。 获取上传的文件可以通过HTTPServletRequest的getPart和getParts两个方法实现&#xff0c;前者接受一个表单名为参数&#xff0c;返回对应…

洛谷 2719 搞笑世界杯

洛谷 2719 搞笑世界杯 洛谷原题链接 这道难度只有普及-的题目却花了我一个多小时才搞出来。但做出来之后就会发现&#xff1a;其实这题确实挺水。。。 解题思路&#xff1a; 首先开二维数组 dp [ i ] [ j ] . 代表已售 i 张 A , j 张 B 时后两人买到的票相同的概率。 很显然&am…

Java FutureTask示例程序

有时我写了一篇有关Java Callable Future接口的文章&#xff0c;我们可以使用它来获得线程的并发处理优势&#xff0c;以及它们能够将值返回给调用程序。 FutureTask是Future接口的基础具体实现&#xff0c;并提供异步处理。 它包含启动和取消任务的方法&#xff0c;以及可以返…

java 日期类代码_java 日期时间处理类

import java.util.Calendar;import java.sql.Date;import java.text.SimpleDateFormat;import java.text.ParseException;/*** Utility to date time* version 0.1* author Super Zhao*/public class DateTimeUtil{/*** 由java.util.Date到java.sql.Date的类型转换* param date…

搭建SSH框架–使用篇

创建如下包&#xff1a; action用于响应请求 service则是提供请求的操作 dao用于操作数据库 entity用于映射数据库表 打开DB Browser –> personalCD&#xff08;创建篇的数据库连接&#xff09;–> SCOTT –> TABLE –> t_USER –> 右键Hibernate Reverse……

Hadoop HA集群的搭建

HA 集群搭建的难度主要在于配置文件的编写&#xff0c; 心细&#xff0c;心细&#xff0c;心细&#xff01; ha模式下&#xff0c;secondary namenode节点不存在... 集群部署节点角色的规划&#xff08;7节点&#xff09;------------------server01   namenode   zkfcserv…

3个简单步骤即可测试Java 8

即将发布的Java 8版本为Java开发人员带来了许多新功能&#xff0c;但是升级时始终存在代码破裂的风险。 我们都记得Java 7发行时有一系列非常严重的错误 。 当然&#xff0c;我们所有人都可以帮助避免在Java 8中出现相同的问题。我今天要介绍的方法是使用现有的Continuous Int…

php接收get参数false是字符串,php解析url (parse_url) 参数成数组 (parse_str)

php解析url (parse_url) 参数成数组 (parse_str)(1)parse_url (PHP 4, PHP 5) — 解析 URL&#xff0c;返回其组成部分&#xff0c;函数原型如下&#xff1a;mixed parse_url ( string $url [, int $component -1 ] )本函数解析一个 URL 并返回一个关联数组&#xff0c;包含在…

父类div高度适应子类div

父类div高度适应子类div 通常有许多div的高度由子类的高度决定父类的高度&#xff0c;所以需要父类div要适应子类div的高度&#xff0c;一般情况父类的高度可以直接设置成“auto”即可。 在有的情况下&#xff0c;子类div会撑破父类div. 所以需要走一些调整。通常有3种方法对…