我的主要功能就是在页面上点击按钮后会出现一个下载框。但当我保存(这个功能成功的)后,分页(下页、上页),保存按钮都失效了?为什么?但是我按在线打开的话就一切正常,为什么啊?我搞了很长时间不知道,拜托大家帮我看看。小女刚刚步入IT业,备感压力啊,不想失业啊!!!在JSP页面中我点击一个按牛后,会激活下面这个函数
function download_file()
{
var doc = document.forms[0];
        doc.action = "/DownLoad.do";     
        <%
        DownLoad df=new DownLoad();
        df.WriteFiles(request);
        %>
        doc.submit();
        return true;
        
}函数中调用的JAVA文件如下package com.skyon.fcard.report;import java.io.*;
import java.net.URL;
import java.util.Date;
import java.util.Random;import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import  com.skyon.core.util.PagedList;
import  com.skyon.dbschema.TransList;
import  com.skyon.fcard.util.*;
import  com.skyon.fcard.bo.*;import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;public class DownLoad  extends Action {
String merID ;
private Logger logger = Logger.getLogger("download");
/**
 * 报表下载
 * 从界面获取输入元素,查询数据,返回结果
 * @param mapping 
 * @param form 
 * @param request 
 * @param response 
 * @return ActionForward
 * @throws Exception 
 */
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
merID = request.getParameter("merID");
String path= request.getRealPath(".");
        String fileName = merID+".txt";
        String path1 =path+"\\"+ merID+".txt";
        //String realPath = this.getServletContext().getRealPath(path1);
        File f = new File(path1);
        if (!f.exists()) {
            response.sendError(404, "File not found!");
          
        }
       fileName = new String(fileName.getBytes("GB2312"), "ISO8859_1"); 
        boolean isOnLine = false;
        response.reset();      
        if (isOnLine) { //在线打开方式
            URL u = new URL("file:///" + path1);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader("Content-Disposition",
                               "inline; filename=" + f.getName());
        } else { //纯下载方式
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition",
                               "attachment; filename=" + fileName);
        }
        byte[] buf = new byte[1024];
        int len = 0;
        BufferedInputStream br = null;
        OutputStream out = null;
        try {
            br = new BufferedInputStream(new FileInputStream(f));
            out = response.getOutputStream();
            while ((len = br.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            out.flush();
        } catch (Exception e) {
            //e.printStackTrace();
        } finally {
            if (br != null) {
                br.close();
                br = null;
            }
            if (out != null) {
                out.close();
                out = null;
            }
        }
       
        return (new ActionForward(mapping.getInput()));
        //return null;
    }

//写文件
public void WriteFiles(HttpServletRequest request) throws Exception {
 merID = request.getParameter("merID");
String path= request.getRealPath(".");
FileWriter fw=new FileWriter(path + "\\"+merID+".txt");
BufferedWriter bw=new BufferedWriter(fw);
bw.write("        卡号    卡类型 交易日期   交易时间     交易金额   交易币种    ECI标志     商户订单号         系统订单号         摘要信息         状态");
bw.newLine();
PagedList pagedList=(PagedList)request.getSession().getAttribute("list");
logger.info("pagedList.size =" + pagedList.size());
for(int i = 0;i < pagedList.size();i++){
if (pagedList.size() > 0 ){
TransList   transList = (TransList) pagedList.get(0);
String tag=new String();
String curr=new String();
if(transList.getOrgType().toString().equals("1"))
{
tag="visa";
}
if(transList.getOrgType().toString().equals("2"))
{
tag="Master";
}
if(transList.getOrgType().toString().equals("3"))
{
tag="JCB";
}
if(transList.getTransCurrency().equals("156"))
{
curr="人民币";
}
bw.write("************"+transList.getCardNo().substring(12,16)+"    "+tag+"      "+Util.getDateTimeString(transList.getTransDate(), "yyyy-MM-dd")+
"  "+Util.getDateTimeString(transList.getTransTime(), "HH:mm:ss")+"     "+
"     "+transList.getTransAmt()+"        "+curr+"             "+transList.getEci().trim()+"       "+
transList.getPosSeq()+"         "+transList.getEbillNo().trim()+"           "+transList.getDescription()+"             "+("00".equals(transList.getReturnCode().trim())?"成功":"失败"));
bw.newLine();
}
}
bw.flush();
fw.close();
}

}

解决方案 »

  1.   

    function download_file()
    {
    var doc = document.forms[0];
            doc.action = "/DownLoad.do";     
            <%
            DownLoad df=new DownLoad();
            df.WriteFiles(request);
            %>
            doc.submit();
            return true;
            
    }//我真给搞胡涂了, 下载功能是写对了.
    //js里面初始化struts的Action 给弄胡涂了...客户端其实有的只能点击的是html javascript. 之后会post触发请求, 发送请求包到服务器,
    之后服务器反馈,