我在写一个下载Excel文件的程序时候,是通过HTTPServletResponse进行的。没有通过inputstream前台jsp页面上有下载按钮,有分页链接,下载按钮链接到下面的这action的export方法,下面是部分代码
public String export() throws Exception{
         response.setHeader("Connection", "close");
         response.setHeader("Content-Type", "application/vnd.ms-excel;charset=GBK");
         response.setHeader("Content-Disposition", "attachment;filename="                + new String("用户管理.xls".getBytes(), "iso-8859-1"));         HSSFWorkbook wb = new HSSFWorkbook();
         HSSFSheet sheet = wb.createSheet();
         wb.setSheetName(0, "用户管理");         POI的一下操作        
         OutputStream out = response.getOutputStream();
         wb.write(out);
         out.close();
}
struts.xml文件中的写法为:<action name="exprotAccount" class="accountAction" method="export“></action>首先声明一下,上面这个程序下载是没有问题的,点击下载按钮弹出下载框,同样页面没有发生跳转,也就是在当前的页面上弹出的下载框
但是只要你点过下载按钮后之后,再去点分页链接的话,分页链接就会失效,而是出现下载框。请问这个问题该如和解决呢? 是不是这response.getOutputStream()出了问题呢?

解决方案 »

  1.   

    估计分页链接的url 发生变化  
      

  2.   

    也可以这么理解,就是点击下载Excel按钮之后,再点击分页图片(响应事件)链接,它也会相应下载Excel事件
      

  3.   

    1楼说对了,就是url连接发生了变化,
    我通过response下载之后,再去点击“分页链接”,因为分页链接里调用js函数,
    在js函数里面,我是通过
    var action = document.forms[0].action;
    去获得action的名字的在没有点击“下载按钮”之前,去点击“分页链接”的话
    var action = document.forms[0].action;
    这种方式得到的就是from 中的action但是如果要是点击了“下载按钮”后,再去点击“分页链接”的话
    var action = document.forms[0].action;
    这种方式得到的就不是from 中的action
    而是你“下载按钮”调用的action所以就出现了我上面问题所说的那种情况
    最好的解决办法就是,“分页链接”调用的js中不通过
    var action = document.forms[0].action;
    这种方式去获得action的名字,而是直接写死action的名字如下var action = "accountSelech.action";
    最后更要谢谢朋友们的帮忙!谢谢你们。