Css 在struts2中隐藏装载机(旋转)

Css 在struts2中隐藏装载机(旋转),css,struts2,loader,Css,Struts2,Loader,我的web应用程序(struts2)查询通常很繁重,需要相当长的时间才能做出响应 我添加了一些简单的(只是一个html DIV和一些CSS)操作调用后等待 旋转旋转,当到达动作目标时,加载一个新的jsp,旋转消失 当调用的操作是下载excel文件之类的数据的操作时,问题就出现了(我想,即使还没有尝试,pdf、文件上传等,在这种情况下,不需要加载新的JSP) 加载完成后,我无法找到停止或隐藏旋转的方法 当窗口开始下载文件时,我尝试使用onblur事件(应用于spin div、容器div、整个窗口等

我的web应用程序(struts2)查询通常很繁重,需要相当长的时间才能做出响应

我添加了一些简单的(只是一个html DIV和一些CSS)操作调用后等待

旋转旋转,当到达动作目标时,加载一个新的jsp,旋转消失

当调用的操作是下载excel文件之类的数据的操作时,问题就出现了(我想,即使还没有尝试,pdf、文件上传等,在这种情况下,不需要加载新的JSP)

加载完成后,我无法找到停止或隐藏旋转的方法

当窗口开始下载文件时,我尝试使用onblur事件(应用于spin div、容器div、整个窗口等)停止微调器

因此,我假设加载文件时的系统窗口不被浏览器视为真正的窗口,因此事件“onblur”毫无意义


最后,在创建excel文件时,或者在系统加载窗口关闭(或打开)时,如何在响应开始时隐藏Whirligigigg?

将下载操作分为两个操作。第一个应该在成功时返回javascript,第二个,步骤2,操作应该在成功时返回流,如下所示:

step1.jsp

<script> $(document).ready(function() {
closeBoxWait(previous_boxWait);
window.location = '<s:url namespace="/" action="step2"/>';
}); </script>
$(文档).ready(函数(){
closeBoxWait(上一个_-boxWait);
window.location='';
}); 
struts.xml

<action name="exportExcelBill" 
    class="jj.colmenjv.dlq.actions.BillAction"
    method="exportBillToExcel">

    <interceptor-ref name="loginStack" />
    <result name="login">timeout.jsp</result>

    <result name="success">step1.jsp</result>
</action>
<action name="step2" 
    class="jj.colmenjv.dlq.actions.BillAction"
    >

    <result name="success" type="stream">
        <param name="contentDisposition">attachment;filename="${reportFile}"</param>
        <param name="contentType">application/vnd.ms-excel</param>
        <param name="inputName">inputStream</param>
        <param name="bufferSize">1024</param>
    </result>
</action>
    <action name="exportExcelBill" 
        class="it.colmenjv.dlq.actions.BillAction"
        method="exportBillToExcel">
        <interceptor-ref name="loginStack" />
        <result name="login">timeout.jsp</result>
        <result name="success">jsp/common/intermeanExcel.jsp</result>
    </action>
    <action name="completeExport" 
        class="it.colmenjv.dlq.actions.BillAction"
        method="completeExport">
        <interceptor-ref name="loginStack" />
        <result name="login">timeout.jsp</result>
        <result name="success" type="stream">
            <param name="contentDisposition">attachment;filename="${reportFile}"</param>
            <param name="contentType">application/vnd.ms-excel</param>
            <param name="inputName">inputStream</param>
            <param name="bufferSize">1024</param>
        </result>
    </action>

timeout.jsp
step1.jsp
附件filename=“${reportFile}”
应用程序/vnd.ms-excel
输入流
1024

前提-我希望得到正确答案,这是允许添加回复的情况之一。
前提2——我不是Struts2中的魔术师(但这已经很清楚了,不是吗?)

Thanx Yasser,我尝试了你宝贵的建议,但我遇到了困难:
这是我的新struts.xml

<action name="exportExcelBill" 
    class="jj.colmenjv.dlq.actions.BillAction"
    method="exportBillToExcel">

    <interceptor-ref name="loginStack" />
    <result name="login">timeout.jsp</result>

    <result name="success">step1.jsp</result>
</action>
<action name="step2" 
    class="jj.colmenjv.dlq.actions.BillAction"
    >

    <result name="success" type="stream">
        <param name="contentDisposition">attachment;filename="${reportFile}"</param>
        <param name="contentType">application/vnd.ms-excel</param>
        <param name="inputName">inputStream</param>
        <param name="bufferSize">1024</param>
    </result>
</action>
    <action name="exportExcelBill" 
        class="it.colmenjv.dlq.actions.BillAction"
        method="exportBillToExcel">
        <interceptor-ref name="loginStack" />
        <result name="login">timeout.jsp</result>
        <result name="success">jsp/common/intermeanExcel.jsp</result>
    </action>
    <action name="completeExport" 
        class="it.colmenjv.dlq.actions.BillAction"
        method="completeExport">
        <interceptor-ref name="loginStack" />
        <result name="login">timeout.jsp</result>
        <result name="success" type="stream">
            <param name="contentDisposition">attachment;filename="${reportFile}"</param>
            <param name="contentType">application/vnd.ms-excel</param>
            <param name="inputName">inputStream</param>
            <param name="bufferSize">1024</param>
        </result>
    </action>
等等。。。等我省略了这个问题不必要的方法体,它在单独运行时运行良好,等等

    }
    catch (Exception e) {
        e.printStackTrace();
    }
===>    session.put("tmpstream", inputStream);
    return SUCCESS;
}
为了用新方法恢复它

public String completeExport() {
    inputStream = (InputStream)session.get("tmpstream");
    logger.info("completeExport() - inputStream="+inputStream);
    return SUCCESS;
}
但这是错误日志(即使-第一行-流不为空):

01/02 07:30:07 | INFO[http-apr-10080-exec-6](BillAction.java:704)-completeExport()-inputStream=java.io。ByteArrayInputStream@11d1921
01/02 07:30:07 |错误[http-apr-10080-exec-6](commonLogger.java:34)-在调用堆栈中找不到名为[InputStream]的java.io.InputStream。检查f指定的标记
或者这个动作。
01/02 07:30:07 |错误[http-apr-10080-exec-6](commonLogger.java:38)-处理请求期间发生异常:在调用堆栈中找不到名为[InputStream]的java.io.InputStream。Chec
k为此操作指定的标记。
java.lang.IllegalArgumentException:在调用堆栈中找不到名为[InputStream]的java.io.InputStream。检查为此操作指定的标记。
位于org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:237)
位于org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
在com.opensymphony.xwork2.DefaultActionInvocation.ExecuteSult(DefaultActionInvocation.java:367)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:271)
位于org.apache.struts2.interceptor.debug.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
在com.opensymphony.xwork2.intercept.DefaultWorkflowIntercept.doIntercept(DefaultWorkflowIntercept.java:176)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
位于com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
位于org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
在com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
在com.opensymphony.xwork2.interceptor.parameters-sinterceptor.doIntercept(parameters-sinterceptor.java:238)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
在com.opensymphony.xwork2.interceptor.parameters-sinterceptor.doIntercept(parameters-sinterceptor.java:238)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
我错在哪里


PS-隐藏微调器工作!塔克斯

更一般地说,问题可以这样定义:如何将display=none设置为DIV?no sudgestion?如果存在另一种方法来获得我需要的东西(插入div+css),那就好了!你是如何下载数据的?张贴代码。
01/02 07:30:07| INFO [http-apr-10080-exec-6] (BillAction.java:704) - completeExport() - inputStream=java.io.ByteArrayInputStream@11d1921
01/02 07:30:07| ERROR [http-apr-10080-exec-6] (CommonsLogger.java:34) - Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the <param name="inputName"> tag specified f
or this action.
01/02 07:30:07| ERROR [http-apr-10080-exec-6] (CommonsLogger.java:38) - Exception occurred during processing request: Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Chec
k the <param name="inputName"> tag specified for this action.
java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the <param name="inputName"> tag specified for this action.
        at org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:237)
        at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
        at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:367)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:271)
        at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
        at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
        at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
        at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
        at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
        at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
        at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)