[b]流程描述:[/b]
报表下载页面向服务器发出生成报表的请求,服务端即时生成报表,然后返回生成的excel报表文件InputStream流给客户端。
[b]问题:[/b]
因即时生成报表,服务端处理比较耗时,从请求发出到响应返回,大概等要10秒。所以想在这段时间,报表下载页面给用户一个等待提示,直到响应返回。我想请教下,让请求提交后,置提交按钮不可用,等到下载对话框弹出时(说明响应返回了),如何实现将按钮重新置为可用?
谢谢~~
[b]流程描述:[/b]
报表下载页面向服务器发出生成报表的请求,服务端即时生成报表,然后返回生成的excel报表文件InputStream流给客户端。
[b]问题:[/b]
因即时生成报表,服务端处理比较耗时,从请求发出到响应返回,大概等要10秒。所以想在这段时间,报表下载页面给用户一个等待提示,直到响应返回。我想请教下,让请求提交后,置提交按钮不可用,等到下载对话框弹出时(说明响应返回了),如何实现将按钮重新置为可用?
谢谢~~
这样处理这个方案
1.使用AJAX提交即时生成报表的请求
2.即时生成的报表及时的生成临时文件存放,对于临时文件的存在周期不是我们讨论的重点,重点是,后台返回的是临时文件的URL地址
3.AJAX提交代码要获取的就是这个地址,获取后在显示一个真实的下载链接让用户点击就行了
这里面有些地方是可以商榷的
比如,后台生成的报表文件可以是生成带临时的目录文件,而且配置临时目录是可以列表的,这样的好处就是,第一步提交以后,后台可以先生成目录名称,在没有生产报表文件的时候就返回结果,前台就可以用AJAX的方法定时对临时目录列表,查看有没有文件输出。
当然复杂的话,可以对输出文件进行接口定义,用来指示报表生成的进度,以及成败等信息。
当然这写和后台服务器的生成方法有关,如果是同步生成的,那要写的好的话,可能就要特殊处理了,要对服务器返回的数据(比如进度,成败)边接收边处理了,这个太复杂我们可以后续讨论。
先看看我说的这个是否满足你的要求。当然AJAX的话提交后禁止用户操作就简单了,前面有朋友给出