1、public static void downloadFile(String path,String fileName) try / 获得 JSF 上下文环境FacesContext context = FacesContext.getCurrentInstance();/ 获得 ServletContext 对象ServletContext servletContext = (ServletContext) context.getExternalContext().getContext();/ 取得文件的绝对路径String realName = servletContext.getReal
2、Path(path) + “/“+ fileName;HttpServletResponse httpServletResponse =(HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();downloadFile(httpServletResponse,realName,fileName); catch (IOException e) e.printStackTrace();FacesContext.getCurrentInstance().responseComp
3、lete();public static void downloadFile(HttpServletResponse response,String realName,String fileName)throws IOException response.setHeader(“Content-disposition“,“attachment; filename=“ + fileName);response.setContentType(“application/x-download“); /File exportFile = new File(realName);/response.setCo
4、ntentLength(int) exportFile.length();ServletOutputStream servletOutputStream = response.getOutputStream();byte b = new byte1024;int i = 0;FileInputStream fis = new java.io.FileInputStream(realName);while (i = fis.read(b) 0) servletOutputStream.write(b, 0, i);使用方法1、在 backing bean 的方法中调用函数1即可。如 Abean 中download 方法调用了该方法,前台可以这样调用:或者2、jsp 页面可以这样调用:于是 jsf 页面我们可以借助 outputlink 来调用该页面