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

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

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

    簡(jiǎn)易代碼之家

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      157 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks
        筆者在最近的項(xiàng)目中遇到動(dòng)態(tài)表格中下載文件的問題,以下是測(cè)試的小例子,支持下載中文名的文件.
    一 頁(yè)面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="編號(hào)" />
    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 閱讀(1125) 評(píng)論(1)  編輯  收藏

    Feedback

    # re: JSF實(shí)現(xiàn)在動(dòng)態(tài)表格中下載文件(支持中文文件名) 2008-01-24 11:17 餑餑
    能不能告訴我tomahawk的.jar包在那下載?
    謝謝  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 一级做a爰片久久毛片免费陪 | 最新国产乱人伦偷精品免费网站| 中文字幕免费视频精品一| 国产精品白浆在线观看免费| 最近免费中文字幕高清大全| 天天摸天天操免费播放小视频| 免费大黄网站在线看| 亚洲成AV人片在线观看| 亚洲1234区乱码| 日本高清免费中文在线看| 久久久久久国产精品免费免费男同 | 黄色片在线免费观看 | 成人a视频片在线观看免费| 一区二区三区亚洲视频| 亚洲国产一区二区a毛片| 亚洲中文字幕无码亚洲成A人片| 永久免费无码日韩视频| 99久久国产免费中文无字幕| 在线免费观看一区二区三区| 亚洲热线99精品视频| 国产v亚洲v天堂a无| 精品国产污污免费网站入口在线| 日本免费一区二区在线观看| 免费a级黄色毛片| 精品亚洲成a人片在线观看| 亚洲AV成人无码久久WWW| 久久香蕉国产线看免费| 国产高清在线免费| 亚洲精品免费视频| 老牛精品亚洲成av人片| 一级毛片免费观看不卡视频| 免费欧洲美女牲交视频| 中文字幕亚洲色图| 一级特黄色毛片免费看| 999久久久免费精品国产| 国产亚洲一区区二区在线| ww亚洲ww在线观看国产| 中文字幕无码日韩专区免费| 日韩免费无砖专区2020狼| 久久亚洲精品成人av无码网站| 日本黄页网址在线看免费不卡|