【问题标题】:jsf 1.1 save as box problemjsf 1.1另存为框问题
【发布时间】:2011-09-18 08:43:51
【问题描述】:

我在 Tomcat 6.0.26 和 Java 1.4 版本上使用 JSF 1.1。我必须在我的项目中使用它们。我的 jsf 页面有一个数据表,我希望它们导出但带有另存为框。单击导出 excel 命令链接后,它会显示如下浏览器:

ÐÏࡱá;þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ@ Workbookÿÿÿÿÿÿÿÿÿÿÿÿ0 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÓÌAá°Áâ\pmusty B°a=œ¯¼=h\:¾#8X@"·Ú1ÈÿArial1ÈÿArial1ÈÿArial1ÈÿArial"$"#,##0_);(" $"#,##0)!"$"#,##0_);[红色]("$"#,##0)""$"#,##0.00_);("$"#, ##0.00)'""$"#,##0.00_);[红色]("$"#,##0.00)7*2_("$"* #,##0_);_("$" * (#,##0);_("$"* "-");(@).))(* #,##0_);_ (* (#,##0);_(* "-");(@)?,:("$"* #,##0.00_) ;_("$"* (#,##0.00);_("$"* "-"??);(@)6+1(* #,##0.00_);_(* (#,##0.00);_(* "-"??);(@_)àõÿ À àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ ôÀ àõÿ 。 ÿ“€ÿ`...-Sheet0Œü¿ADSOYAD DEPARTMANEVCEPDAHILIerdemaktasYonetici02mesutozenIT03mustafaaydemir Netweaver01yunustastutanDeneme0506004ÿŒü¿ ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ÿÿÿÿÿ>¶@ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !"#$þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

我该如何解决这个问题?

thnx balusC.但是问题没有解决。这是我的代码..

`public String export(List list) {

    Iterator i1 = list.iterator();
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet s = wb.createSheet();
    HSSFRow r = null;
    HSSFCell c = null;
    int i = 0;

    try {

        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        HttpServletResponse resp = (HttpServletResponse) externalContext
                .getResponse();
        ServletOutputStream out = resp.getOutputStream();
        resp.setContentType("application/vnd.ms-excel");


        HSSFRow r2 = s.createRow(0);

        for (short cellnum = (short) 0; cellnum < 6; cellnum++) {

            c = r2.createCell(cellnum);

            if (cellnum == 0)
                c.setCellValue("AD");
            else if (cellnum == 1)
                c.setCellValue("SOYAD");
            else if (cellnum == 2)
                c.setCellValue("DEPARTMAN");
            else if (cellnum == 3)
                c.setCellValue("EV");
            else if (cellnum == 4)
                c.setCellValue("CEP");

            else if (cellnum == 5)
                c.setCellValue("DAHILI");
        }


        while (i1.hasNext()) {
            md1 = new Model();
            md1 = (Model) i1.next();

            int rownum = i + 1;

            r2 = s.createRow(rownum);

            for (short cellnum = (short) 0; cellnum < 6; cellnum++) {

                c = r2.createCell(cellnum);

                if (cellnum == 0)
                    c.setCellValue(md1.getAd());
                else if (cellnum == 1)
                    c.setCellValue(md1.getSoyad());
                else if (cellnum == 2)
                    c.setCellValue(md1.getDepartman());
                else if (cellnum == 3)
                    c.setCellValue(md1.getEv());
                else if (cellnum == 4)
                    c.setCellValue(md1.getCep());

                else if (cellnum == 5)
                    c.setCellValue(md1.getDahili());

            }

            i++;
        }
        resp.setHeader("content-disposition:",
                "attachment; filename= \"TelefonRehberi.xls\"");

        wb.write(out);
        out.flush();
        out.close();

        facesContext.responseComplete();
    } catch (Exception e) {
        System.out.println("Error: " + e);
    }

    return "";
}`

【问题讨论】:

  • 您的 JSF 源代码是什么样的?

标签: jsf


【解决方案1】:

您需要设置内容类型标头,以便浏览器了解它是什么类型的文件。

response.setHeader("Content-Type", "application/vnd.ms-excel");

您需要设置内容处置标头,以便浏览器弹出一个另存为对话框:

response.setHeader("Content-Disposition", "attachment;filename=\"" + yourFileName + "\"");

您需要确保将文件写入为二进制数据,而不是字符数据。

InputStream input = getExcelFileContentSomehow();
OutputStream output = response.getOutputStream();
// Write input to output.

更新:根据您的代码 sn-p,您的 Content-Disposition 标头不正确。标题名称末尾有一个冒号。删除它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2013-01-27
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    相关资源
    最近更新 更多