<rich:fileUpload fileUploadListener="# {bean.fileUploadAction}"
immediateUpload="true" acceptedTypes="xls" maxFilesQuantity="1">
</rich:fileUpload>
在富文件上传中,如果给定acceptedTypes="xls",但在文件选择框中"add"显示所有类型的文件。我想把它限制为某种特定的格式我怎么能做到呢。任何形式的帮助都是感激的,提前感谢…
这种替代方法可能在某种程度上解决你的问题。向<rich:fileUpload
组件添加一个onclick
事件,如下所示。
<rich:fileUpload onclick="this.getElementsByTagName('input')[0].setAttribute('accept', 'application/vnd.ms-excel');" fileUploadListener="# {bean.fileUploadAction}"
immediateUpload="true" maxFilesQuantity="1">
</rich:fileUpload>
这只有在它生成以下HTML(并且该页面是由HTML5兼容的web浏览器打开的)时才有可能:
<input type="file" ... accept="application/vnd.ms-excel" />
然而,它不这样做。相反,它生成一个简单的HTML4兼容的<input type="file">
,没有accept
属性,并通过JavaScript对所选文件进行文件扩展检查。
所以你运气不好。您基本上需要用另一个组件替换<rich:fileUpload>
,该组件生成所需的HTML,并在<input type="file">
上设置适当的accept
属性。就我目前所见,还没有一个JSF组件库提供这样的组件。你可能需要自己种植。
参见:
- HTML5规范-
type=file
的
accept
属性