一般来说,实现下载文件到客户端的功能需要定义一个servlet或者fileter并做一些额外的处理。而fileDownload构件提供了便捷的方式来实现文件下载功能。
表 34.8. 构件信息
| Component Type | org.operamasks.faces.component.misc.UIFileDownload |
| Component Family | org.operamasks.faces.component.misc.UIFileDownload |
| Component Class | org.operamasks.faces.component.misc.UIFileDownload |
| Tag Class | org.operamasks.faces.webapp.misc.UIFileDownloadTag |
| Renderer Type | org.operamasks.faces.component.misc.UIFileDownload |
| Renderer Class(AJAX) | org.operamasks.faces.render.misc.ajax.AjaxFileDownloadRenderer |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++org.operamasks.faces.component.misc.base.UIFileDownloadBase
+++++org.operamasks.faces.component.misc.UIFileDownload
表 34.9. 属性
| binding | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | javax.el.ValueExpression(javax.faces.component.UIComponent) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。 | ||||
| bufferSize | 定义类 | org.operamasks.faces.component.misc.UIFileDownload | ||
| 类型 | javax.el.ValueExpression(java.lang.Long) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 数据流的缓存大小,以字节为单位。如不指定则以服务器当前配置为准。 | ||||
| contentType | 定义类 | org.operamasks.faces.component.misc.UIFileDownload | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 下载文件的MIME类型。 | ||||
| downloadListener | 定义类 | org.operamasks.faces.component.misc.UIFileDownload | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 一个以EL表达式指定的下载监听器。用户可以在其中通过{@link FacesContext#getResponseStream()}获取输出流并写入下载数据。 | ||||
| for | 定义类 | org.operamasks.faces.component.misc.base.UIFileDownloadBase | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定一个自动触发下载的提交构件的id。该构件在提交后默认会触发下载动作。 | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| onError | 定义类 | org.operamasks.faces.component.misc.UIFileDownload | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一段用于显示错误提示信息的JavaScript回调脚本。<br/> 这段脚本中可以通过message传入参数获取到服务器端返回的错误信息。<br/> 如果不指定,则在下载错误时弹出默认的提示窗口。 | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| savedName | 定义类 | org.operamasks.faces.component.misc.UIFileDownload | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 下载到本地保存的文件名。 没有指定时,则: 如果src属性指定了类型为java.net.URL或String的源,则使用与源文件一致的默认文件名; 如果指定了其他类型,则随机生成一个默认的UUID文件名。 | ||||
| src | 定义类 | org.operamasks.faces.component.misc.UIFileDownload | ||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 下载的源。 可以返回以下类型: 1. byte[]: 包含文件数据的字节数组 2. java.io.InputStream: 包含文件数据的输入流 3. java.io.File 本地文件 4. java.net.URL: 指向下载文件的URL 5. java.lang.String: 如果字符串以resource:开头,则从类路径中查找资源并输出, 否则将字符串作为指向文件的URL | ||||