富文件上传显示添加的所有文件,即使对于acceptedTypes =“xls”

时间:2013-01-08 13:13:50

标签: jsf file-upload richfaces content-type

<rich:fileUpload fileUploadListener="# {bean.fileUploadAction}"
 immediateUpload="true" acceptedTypes="xls" maxFilesQuantity="1">        
</rich:fileUpload>

在富文件上传我给了acceptedTypes =“xls”,但在文件选择框中的“添加”文件类型显示全部。我想将它限制为只有一些特定的格式我该怎么做。 任何形式的帮助都是适当的,提前谢谢..

2 个答案:

答案 0 :(得分:2)

只有当它生成以下HTML(并且该页面由HTML5兼容的webbrowser打开)时才有可能:

<input type="file" ... accept="application/vnd.ms-excel" />

然而,it doesn't do that。相反,它会生成一个简单的HTML4兼容<input type="file">而没有accept属性,并通过JavaScript对所选文件进行文件扩展名检查。

所以你在这里运气不好。您基本上需要将<rich:fileUpload>替换为另一个组件,该组件会在accept上设置正确的<input type="file">属性,生成所需的HTML。据我所知,目前还没有一个JSF组件库提供这样的组件。你可能需要自己生长。

另见:

答案 1 :(得分:2)

这种替代方式可以在一定程度上解决您的问题。在onclick组件中添加<rich:fileUpload个活动,如下所示。

<rich:fileUpload onclick="this.getElementsByTagName('input')[0].setAttribute('accept', 'application/vnd.ms-excel');" fileUploadListener="# {bean.fileUploadAction}"
 immediateUpload="true" maxFilesQuantity="1">        
</rich:fileUpload>