服务器端 - 进度条

时间:2012-12-29 11:59:26

标签: java javascript jquery ajax struts2

我目前正在处理一个文件转换程序,一旦文件被上传,它会将文件转换为不同的文件格式(ppt,pdf),这通常需要很长时间,具体取决于文件大小。由于文件转换发生在后端,我希望用户看到文件转换的进度(如进度条,例如“52%正在转换的文件”),无论如何,我可以向用户显示当前进度文件转换(发生在后端)?在文件转换期间,我只能显示状态(数字(由我使用的API提供))

我不知道从哪里开始可以有人提供一些见解或方法吗?

3 个答案:

答案 0 :(得分:6)

如果您使用的是Struts2,请查看Execute and Wait Interceptor。它会为您的任务创建新线程,该线程将在后台执行,同时您可以向用户显示一些进度。

struts.xml文件中为您的长时间操作添加execAndWait拦截器,并定义两个结果waitsuccess

<action name="longRunningAction" class="...">
  <interceptor-ref name="defaultStack"/>
  <interceptor-ref name="execAndWait"/>
  <result name="wait">longRunningAction-wait.jsp</result>
  <result name="success">longRunningAction-success.jsp</result>
</action>

您仍然需要通过AJAX或简单页面刷新在JSP中轮询此操作。

答案 1 :(得分:1)

你说的是:During file conversion I am only able to show the status(in numbers(provided by the API I am using))

这是多少?是转换文件的百分比?如果是,则只需导入jQuery UI库并添加.progressbar()

答案 2 :(得分:0)

简单的解决方案: 使用Struts2-Jquery标记

使用gif图片在提交代码上定义指标

例如

 `<form action="...">
     <s:file ..../>
     <sj:submit indicator="imgId"> 
 </form>

 <img id="imgId" src="images/indicator.gif" alt="Loading..."     
  style="display:none"/>
     `