这两天在使用 primefaces 4.0 做壹個下载文件的功能,去官方网站 primefaces.org 看了下,只有壹個 PDF 版用户指南和各种用例的在线 Demo ,目前可以在官方网站上找到的下载案例见于 http://www.primefaces.org/showcase/ui/fileDownload.jsf,能够看到部分源代码,但是找不到整個工程,实在是很不方便。后来又通过 Google 搜索了下,终于让我在 http://networkedblogs.com/B8rUw 找到了 primefaces-showcase 源代码和 WAR 安装包的下载地址,原来是在 primefaces 自己的 repository 资源库里的,仔细看了下,是用标签
首先是 XHTML 页面,包含了三部分,壹個
其中几個需要注意的地方是:1、
后台部分的代码主要是 FileDownloadController ,它的内容如下所示:
package org.primefaces.examples.view;
import java.io.InputStream;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
public class FileDownloadController {
private StreamedContent file;
public FileDownloadController() {
ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
InputStream stream = servletContext.getResourceAsStream("/images/optimusprime.jpg");
file = new DefaultStreamedContent(stream, "image/jpg", "downloaded_optimus.jpg");
}
public StreamedContent getFile() {
return file;
}
}
1、public DefaultStreamedContent(InputStream stream);
2、public DefaultStreamedContent(InputStream stream, String contentType);
3、public DefaultStreamedContent(InputStream stream, String contentType, String name);
4、public DefaultStreamedContent(InputStream stream, String contentType, String name, String contentEncoding);
参数说明:
1、stream:要下载的文件的输入流对象;
2、contentType:要下载的文件的文件类型,确切的说是mimeType,如MS EXCEL2003 的mimeType 是"application/vnd.ms-excel",JPG图片的mimeType 是“image/jpg”;
3、name:给下载的文件重新指定壹個文件名(包括扩展名),会显示在浏览器端的下载窗口中;
4、contentEncoding:文件的默认编码格式,如GBK、UTF-8、GB18030等,这個字段貌似用的稍少些;
最后我想吐槽下,Primefaces 网站上的超链接和菜单排列真有够乱的,顶上的几個链接我以为是带有下拉列表的,结果点击之后是直接全页面刷新并跳转的,真正的各种菜单链接其实是放在页面底部的黑色背景区域里的,花了我好长时间才找到。而且光是通过网站我们还不能直接找到 primefaces repository 的地址,只能找到它的在线 Demo,其中有很多小的细节通过 Demo 其实是看不出来的,最好的办法是结合完整的源代码进行学习。不知道 PrimeFaces 官方是怎么想的,把個网站建设的乱七八糟。
本文重点参考了如下内容:
[1]Download PrimeFaces ShowCase and Source Code http://networkedblogs.com/B8rUw
[2]What are the Microsoft Office MIME Types http://filext.com/faq/office_mime_types.php
[3]PrimeFaces Demo War 包下载地址(包含所有的样例代码) http://repository.primefaces.org/org/primefaces/prime-showcase/1.0.0-SNAPSHOT/prime-showcase-1.0.0-SNAPSHOT.war