我们的JSF 2.2 Web应用程序可能存在这样的情况:用户必须填写必须上传多个文件的公式。
First Name: [ John ]
Last Name: [ Doe ]
Photo: [ choose File ] (no file chosen)
Passport: [ choose File ] (no file chosen)
我知道有多个上传表单,例如Primefaces,但这不符合我的要求,因为我想知道哪个文件是照片或护照,我需要验证输入,因为这些文件是强制性的。
第一个选项就像上面的例子。只需使用多个单<h:inputFile>
个标记即可。
优点:
缺点:
<h:inputFile>
代码,因此在表单提交期间将处理每个文件上传:因此我们可能必须限制文件大小以便用户不会遇到问题<h:form>
上使用多个单个文件上传?我有时会看到这一点,并想知道为什么以这种方式实施。当您必须上传文件时,它会打开一个带有文件上传的弹出窗口。上传后,弹出窗口将关闭,表单已选择上传的文件。
这项技术是否有任何提示/教程?特别是窗口间的沟通对我来说还不清楚。
优点:
缺点:
为了消除弹出窗口拦截器问题,我们可以使用模态对话框进行上传。因此,我们选择上传文件,新模式<p:dialog modal="true"/>
打开,<h:inputFile>
内部处理您的上传。
我确实尝试了这一点,发现使用<h:inputFile>
或<p:inputFile mode="simple">
无法上传AJAX(无法找到BalusC评论的来源,但有一个similar one)。我的整个网站都被重新渲染,我的公式输入丢失了。
优点:
缺点:
我的最后一个想法是提供一个上传管理器。这是一个视图,用户可以在列表/表中查看其上传的文件,并使用单 <h:inputFile>
添加文件,添加说明等。因此,文件已经在系统中,如果没有被引用,则在72小时之后被删除。
用户在必须输入文件时单击链接,然后从模式对话框的列表/表中选择相应的文件。因此,用户必须首先上传他们的文件,甚至在填写表格之前,这是非常痛苦的,所以如果他们也可以在模态对话框中上传文件会很好。 (这看起来像一个视图,他们有一个<h:inputFile>
和他们已经上传的文件列表。但是我们有与选项3中相同的AJAX问题......
我看到解决这个问题的唯一方法是在表单的开头写一些内容,如:
For this form you need the following files in your upload manager:
- Photo
- Passport
优点:
缺点:
对于这种情况,您还有其他想法吗?我不可能是唯一一个这样的人。 或者像Primefaces这样的多个文件上传是否适合配置验证?
我希望你能帮我解决这个头脑风暴