我用的是eclipse + tomcat + struts 想实现通过点击页面的提交按钮,代码如下: 
<html:submit property="method" onclick="return changeActionYes(this);">CSV 
</html:submit> <script type="text/javascript" language="JavaScript"> 
function changeActionYes(obj) 

  obj.form.action=' <html:rewrite page="/member/yes.do"/>'; 

</script> 然后,进入到Action中,将页面内一个表格的数据导出到csv文件中。但执行完导出语句之后,回到原来的jsp页面,页面却不再刷新了。 问题是,我想这时候把原来的那个表格的内容清空,但页面从我点击上面那个 
<html:submit property="method" onclick="return changeActionYes(this);">CSV 
</html:submit> 
按钮之后,页面就不动了,也就无法再运行javascript事件了,请问各位大虾有什么高见啊

解决方案 »

  1.   

    有没有跳到/yes.do里去啊?如果跳过去了,在action里把form都清掉返回原来page就行了啊
      

  2.   

    进action里存csv文件以后,对页面的表格进行清空,然后在请求一下你要回到原来的jsp页面就可以
      

  3.   

    <html:submit target="_blank"我看你提交到一个新的窗口算了。
      

  4.   

    写错了,应该在<html:form 里面才对吧
      

  5.   


    form里的内容已经清除了,正常情况下,执行完action里的东西之后,页面应该会刷新,然后执行
    <body onload="showPage()">
    的showPage()方法,但不知道什么原因,在action中执行过csv导出之后,页面不再刷新,也就是说,即使已经把form里的内容清空了,但页面这时候根本没再
    刷新,页面的东西还是一点没动啊
      

  6.   


    public ActionForward CSV(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {            Vector termItems=new Vector();
              response.reset();   
            response.setContentType("application/x-msdownload");
             response.setHeader("Content-Disposition",    "attachment;    filename="    + "csvName" +  ".csv");   
            response.setCharacterEncoding("shift-jis");
     
                    String csvMember1[] = {"denPyoNo"," "," ","idoName"," "," ","nowDate"};
                    String csvMember2[] = {""};
                    String csvMember3[] = {"dePyoTitle"};
                    String csvMember4[] = {""};
                    String csvMember5[] = {"","",,"","","",""};
            
                  termItems.add(csvMember1);
                  termItems.add(csvMember2);
                  termItems.add(csvMember3);
                  termItems.add(csvMember4);
                  termItems.add(csvMember5);
                    
            PrintWriter    out = null;
            BufferedWriter    bufWriter = null;
            try
            {
          out = response.getWriter();
          bufWriter = new BufferedWriter(new PrintWriter(out));   
          for(int i=0;i<termItems.size();i++){   
      String[] lineArr    =    (String[])termItems.elementAt(i);   
      String   lineStr    =    ""; 
      for(int j=0; j<lineArr.length; j++){
      lineStr=lineStr+lineArr[j]+",";   
      }   
      lineStr=lineStr.substring(0,lineStr.length()-1);   
      bufWriter.write(lineStr);      
      bufWriter.newLine();   
                  }
            }catch(Exception e){
            }
            finally
            {
          try
          {
      bufWriter.flush();   
      bufWriter.close();   
      out.close();
          }catch(Exception ee){
          }
            }
             return mapping.findForward("success");
          }配置文件:<action
    path="/member/csv"
    type="com.my.mnt.action.maintenance.MemberInfoAction"
    name="memberInfoForm"
    parameter="method"
    scope="request"
    validate="false"
    input="memberInfo">
    <forward
    name="success"
    path="memberInfo"/>
    <forward
    name="error"
    path="error"/>
    <forward
    name="errorBack"
    path="memberInfo"/>
    </action>我试过如果不用另存为,而是用保存的话,就不会有问题,回到页面之后,自动刷新,
    问题是客户要求可以自由修改保存位置和文件名,所以只能用另存为啊昨天又分析了下,action执行后不能刷新可能是因为response.reset();的原因,
    但是,还有其他办法来实现另存为,同时不用response的吗?
      

  7.   

    不用response也没有办法做啊你如果一定要实现这样的功能,建议你在用户点导出的时候open一个新窗口,在新窗口里导出,同时父窗口刷新form
      

  8.   

    可能也就这样了,感觉出了新OPEN个窗口也没有什么办法了,多谢大家帮忙了,结贴了!