<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包在那下載?
    謝謝  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 日韩午夜理论免费TV影院| 国产精品免费观看视频| 免费专区丝袜脚调教视频| 亚洲国产成人高清在线观看| 久久嫩草影院免费看夜色| 亚洲日韩国产精品乱| 美女视频免费看一区二区| 亚洲福利精品电影在线观看| 成人a毛片视频免费看| 久久精品国产精品亚洲人人| 国产无限免费观看黄网站| 国产亚洲精品资源在线26u| 免费91最新地址永久入口| 99亚洲精品高清一二区| 亚洲国产精品免费观看| 亚洲AV色欲色欲WWW| 亚洲JIZZJIZZ中国少妇中文| 中文字幕免费在线播放| 亚洲国产综合专区在线电影| 国产91色综合久久免费分享| 国产成人亚洲综合一区| 亚洲成a人一区二区三区| a级毛片视频免费观看| 亚洲一区二区三区四区在线观看 | 亚洲成a人片在线不卡一二三区| 天天天欲色欲色WWW免费| 老司机午夜免费视频| 黑人精品videos亚洲人| 24小时日本韩国高清免费| 亚洲色欲色欲www在线播放 | 亚洲高清国产AV拍精品青青草原| 久久99国产乱子伦精品免费| 亚洲六月丁香六月婷婷色伊人 | 午夜视频免费成人| 2022国内精品免费福利视频| 亚洲国语精品自产拍在线观看| 97无码免费人妻超级碰碰碰碰| 美女被免费网站视频在线| 亚洲综合久久1区2区3区 | 亚洲成a人片在线观看日本| 免费毛片在线看片免费丝瓜视频 |