2

我在 wicket 项目中创建了一个 multiuploadField 对象,它允许在单击提交按钮后选择文件并提交文件。但是我想在用户选择文件后自动提交表单并在不单击提交按钮的情况下上传文件。是否有可能做到这一点?有没有办法使用 onChange 事件或其他任何方法来做到这一点。

<form wicket:id="simpleUpload">
            <fieldset>
                <legend>Upload form</legend>
                <p>
                <div wicket:id="fileInput" class="mfuex" />
                </p>
               <input type="submit" value="Upload!" />
            </fieldset>
</form>

提前致谢。

4

1 回答 1

3

是的,您必须使用AjaxFormSubmitBehavior带有change事件的文件输入字段。

如我所见,您使用MultiFileUploadField,所以只需添加:

fileInput.add ( new AjaxFormSubmitBehavior(form/*optional*/, 'change') 
                {
                   @Override
                   protected void onSubmit ( AjaxRequestTarget target )
                   {
                      super.onSubmit ( target );
                   }
                   /* you can also override other methods here, 
                      but note that Form's submit method will
                      be called too.*/
                } );

文件上传字段在哪里fileInput,并且form是您的字段存储的表单。如果没有发生提交事件,则检查onError您的表单是否有一些验证的方法。

请注意,每次您从系统文件选择器中选择文件时都会调用此行为。MultiFileUploadField不允许同时选择多个文件。只能一一添加。

要一次选择一些文件,您可以使用FileUploadFieldHTML5 标记multiple,因此在您的标记中将如下所示:

<input wicket:id="fileInput" type="file" multiple="multiple"/>

它仅适用于 HTML5,对于其他版本,它只允许加载一个文件,但上述提交方法也适用于此。

更新

实际上,我已经在这里为您描述了大部分内容。您应该以某种方式做出反应,接受答案或描述为什么这不能解决您的问题。

于 2014-10-16T10:53:57.400 回答