javahearter 2009-07-09 10:32
浏览 705
已采纳

页面等待下载响应如何处理?

[b]流程描述:[/b]
报表下载页面向服务器发出生成报表的请求,服务端即时生成报表,然后返回生成的excel报表文件InputStream流给客户端。
[b]问题:[/b]
因即时生成报表,服务端处理比较耗时,从请求发出到响应返回,大概等要10秒。所以想在这段时间,报表下载页面给用户一个等待提示,直到响应返回。我想请教下,让请求提交后,置提交按钮不可用,等到下载对话框弹出时(说明响应返回了),如何实现将按钮重新置为可用?

谢谢~~

  • 写回答

5条回答 默认 最新

  • iteye_20231 2009-07-09 11:36
    关注

    这样处理这个方案
    1.使用AJAX提交即时生成报表的请求
    2.即时生成的报表及时的生成临时文件存放,对于临时文件的存在周期不是我们讨论的重点,重点是,后台返回的是临时文件的URL地址
    3.AJAX提交代码要获取的就是这个地址,获取后在显示一个真实的下载链接让用户点击就行了

    这里面有些地方是可以商榷的
    比如,后台生成的报表文件可以是生成带临时的目录文件,而且配置临时目录是可以列表的,这样的好处就是,第一步提交以后,后台可以先生成目录名称,在没有生产报表文件的时候就返回结果,前台就可以用AJAX的方法定时对临时目录列表,查看有没有文件输出。
    当然复杂的话,可以对输出文件进行接口定义,用来指示报表生成的进度,以及成败等信息。

    当然这写和后台服务器的生成方法有关,如果是同步生成的,那要写的好的话,可能就要特殊处理了,要对服务器返回的数据(比如进度,成败)边接收边处理了,这个太复杂我们可以后续讨论。

    先看看我说的这个是否满足你的要求。当然AJAX的话提交后禁止用户操作就简单了,前面有朋友给出

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类