<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    簡易代碼之家

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      157 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks
        筆者在最近的項目中遇到動態表格中下載文件的問題,以下是測試的小例子,支持下載中文名的文件.
    一 頁面test.jsp
     1<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
     2<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
     3<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
     4<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
     5<html>
     6<head>
     7<title>文件列示</title>
     8</head>
     9<body>
    10<f:view>
    11<h:form>
    12      <t:panelGrid>
    13
    14       <t:panelGroup>
    15        <!-- this is table      -->
    16        <t:dataTable id="data" value="#{fileBean.contentList}" var="result" border="1" width="100%" rows="10">
    17
    18         <t:column rendered="true">
    19          <f:facet name="header">
    20           <t:outputText value="編號" />
    21          </f:facet>
    22          <t:outputText value="#{result.number}" />
    23         </t:column>
    24
    25         <t:column rendered="true">
    26          <f:facet name="header">
    27           <t:outputText value="名稱" />
    28          </f:facet>
    29          <t:outputText value="#{result.name}" />
    30         </t:column>
    31
    32         <t:column rendered="true">
    33          <f:facet name="header">
    34           <t:outputText value="大小" />
    35          </f:facet>
    36          <t:outputText value="#{result.size}" />
    37         </t:column>
    38
    39         <t:column rendered="true">
    40          <f:facet name="header">
    41           <t:outputText value="操作" />
    42          </f:facet>
    43          <t:commandButton value="下載" actionListener="#{fileBean.downloadFile}" />
    44         </t:column>
    45        </t:dataTable>
    46    
    47       </t:panelGroup>
    48      </t:panelGrid>
    49</h:form>
    50</f:view>
    51</body>
    52</html>

    二 MyFile.java
     1package com.jakin;
     2
     3public class MyFile {
     4    private String number;
     5    private String name;
     6    private String size;
     7
     8    public MyFile(String number, String name, String size) {
     9        super();
    10        this.number = number;
    11        this.name = name;
    12        this.size = size;
    13    }

    14
    15    public String getNumber() {
    16        return number;
    17    }

    18
    19    public void setNumber(String number) {
    20        this.number = number;
    21    }

    22
    23    public String getName() {
    24        return name;
    25    }

    26
    27    public void setName(String name) {
    28        this.name = name;
    29    }

    30
    31    public String getSize() {
    32        return size;
    33    }

    34
    35    public void setSize(String size) {
    36        this.size = size;
    37    }

    38}

    39

    三,JSF中的bean:FileBean
     1package com.jakin;
     2
     3import java.io.File;
     4import java.io.FileInputStream;
     5import java.io.IOException;
     6import java.util.ArrayList;
     7import java.util.List;
     8
     9import javax.faces.component.UIColumn;
    10import javax.faces.component.UIComponent;
    11import javax.faces.component.html.HtmlDataTable;
    12import javax.faces.context.FacesContext;
    13import javax.faces.event.ActionEvent;
    14import javax.servlet.ServletOutputStream;
    15import javax.servlet.http.HttpServletResponse;
    16
    17public class FileBean {
    18    private List<MyFile> contentList; // 存放文件的集合
    19
    20    public List<MyFile> getContentList() {
    21        contentList = new ArrayList<MyFile>();
    22        for (int i = 0; i < 5; i++{
    23            MyFile myFile = new MyFile(i + "", i + ".txt""100K");
    24            contentList.add(myFile);
    25        }

    26        return contentList;
    27    }

    28
    29    public void setContentList(List<MyFile> contentList) {
    30        this.contentList = contentList;
    31    }

    32
    33    public void downloadFile(ActionEvent e) {
    34        UIComponent component = (UIComponent) e.getSource();
    35        UIColumn column = (UIColumn) component.getParent();
    36        HtmlDataTable dataTable = (HtmlDataTable) column.getParent();
    37        int listIndex = dataTable.getRowIndex();
    38        MyFile myFile = (MyFile) contentList.get(listIndex);
    39        String name = myFile.getName();
    40        // String name = "輕松搞定XML.pdf";
    41
    42        try {
    43            File file = new File("D:\\project\\UploadFile\\" + name);
    44            HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext
    45                    .getCurrentInstance().getExternalContext().getResponse();
    46            ServletOutputStream servletOutputStream = httpServletResponse
    47                    .getOutputStream();
    48
    49            name = java.net.URLEncoder.encode(name, "UTF-8");
    50            httpServletResponse.setHeader("Content-disposition",
    51                    "attachment; filename=\"" + name + "\"");
    52            httpServletResponse.setContentLength((int) file.length());
    53            httpServletResponse
    54                    .setContentType("application/x-download;charset=UTF-8");
    55
    56            byte[] b = new byte[1024];
    57            int i = 0;
    58            FileInputStream fis = new java.io.FileInputStream(file);
    59            while ((i = fis.read(b)) > 0{
    60                servletOutputStream.write(b, 0, i);
    61            }

    62        }
     catch (IOException ioe) {
    63            ioe.printStackTrace();
    64        }

    65        FacesContext.getCurrentInstance().responseComplete();
    66    }

    67
    68}
    posted on 2007-11-28 18:37 Jakin.zhou 閱讀(1120) 評論(1)  編輯  收藏

    Feedback

    # re: JSF實現在動態表格中下載文件(支持中文文件名) 2008-01-24 11:17 餑餑
    能不能告訴我tomahawk的.jar包在那下載?
    謝謝  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产一区二区三区在线免费| 国产成人麻豆亚洲综合无码精品| 337p日本欧洲亚洲大胆人人| 亚洲综合久久夜AV | 精品免费tv久久久久久久| 亚洲av无码片区一区二区三区| 免费播放特黄特色毛片| 日本免费在线中文字幕| 亚洲第一成年免费网站| 国产亚洲一区区二区在线| 精品久久久久成人码免费动漫| 一级毛片一级毛片免费毛片| 久久久亚洲欧洲日产国码是AV| 国产成人免费网站在线观看| 日本免费久久久久久久网站| 国产精品亚洲精品日韩电影| 亚洲AV无码不卡在线播放| 日本免费网站观看| 24小时免费看片| www免费黄色网| 亚洲精品色在线网站| 亚洲视频在线观看网站| 亚洲日本va午夜中文字幕久久| 67pao强力打造高清免费| 一级毛片正片免费视频手机看| 亚洲国产美女福利直播秀一区二区 | 亚洲伊人色一综合网| 精品国产亚洲一区二区在线观看| 野花高清在线观看免费完整版中文| 99精品全国免费观看视频..| 亚洲av日韩综合一区二区三区| 精品亚洲成a人片在线观看少妇| 亚洲精品成人片在线观看| 成熟女人牲交片免费观看视频| 最近免费最新高清中文字幕韩国| 国产又黄又爽胸又大免费视频| 免费VA在线观看无码| jizzjizz亚洲日本少妇| 亚洲一区精彩视频| 亚洲国产精品综合久久2007| 亚洲成a人片77777老司机|