使用ajax上传文件时单击“提交”按钮会发生什么

时间:2014-03-12 06:31:40

标签: jsf upload

我有一个包含两个字段的表单:

<h:form>
<p:fileUpload fileUploadListener="#{mybean.fileUpload}" mode="advanced" auto="true" />
<h:inputText value="#{mybean.discription}"/>
<h:commandButton action="#{mybean.submit}" value="Submit"/>
</h:form>

如果文件很大,则需要几秒钟才能完全上传。表格不使用ajax。 要成为用户,我选择一个文件(大文件),然后立即单击提交按钮。 文件,null或submit方法会发生什么,等到文件上传完成? 感谢。

1 个答案:

答案 0 :(得分:1)

我认为了解p:fileUpload组件上传文件的真实程度非常重要。它将以两种方式之一完成:它将创建一个隐藏的单独表单,将输入类型=“文件”放在那里并提交此表单,否则它将使用flash上​​传文件,该文件也不使用原始表单。

所有这些意味着它无法在浏览器中同步,当您单击“提交”按钮时,它将不会等到文件上传。

仍然可以在服务器上同步。如果你使用JBoss Seam,那么方法调用可能会被同步(据我记得jboss seam同步服务器端的ajax请求)。如果使用其他框架(Spring)而不是同步,可能会发生#{mybean.submit}早于#{mybean.fileUpload}被调用,甚至服务器上的状态也可能丢失#根本不会调用{mybean.fileUpload}。

但无论如何,文件将被上传到服务器,但bean可以忽略。