2014-10-16 3 views
2

Я создал объект multiuploadField в проекте калитки, который позволяет выбирать файлы и отправлять файлы после нажатия кнопки отправки. Но я хочу автоматически отправить форму, как только файл будет выбран пользователем, и загрузите файл, не нажав кнопку отправки. Можно ли сделать это? Есть ли способ сделать это, используя событие onChange или что-то еще.Wicket multiuploadField Auto submit

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

Заранее благодарен.

ответ

2

Да, вы должны использовать 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 не позволяет одновременно выбирать несколько файлов. Добавляет только один за другим.

Чтобы выбрать несколько файлов одновременно вы можете использовать FileUploadField и HTML5 тег multiple, поэтому в разметке будет следующим:

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

Он будет работать только с HTML5, а для другой версии она будет позволяет загружать только один файл, но метод отправки, описанный выше, будет работать и для этого.

UPDATE

На самом деле я уже описывают большую часть этого для вас here. Вы должны как-то отреагировать, приняв ответ или объяснив, почему это не решает вашу проблему.

+0

Привет, спасибо за ваше время и ответ. На самом деле, у меня есть эта загрузка с несколькими калитками, но я не хочу отдельной кнопки отправки для этого. Когда пользователь нажимает кнопку загрузки, он должен быть автоматически отправлен при выборе файлов. Но я все еще запутался в использовании кода выше в моем java-коде. – sam

+0

@ user2840965, да, я это понял и предложил вам использовать 'AjaxFormSubmitBehavior'. Вам нужно только добавить его в поле загрузки файла и удалить кнопку отправки из разметки. «Форма» будет отправлена ​​после того, как пользователь выберет файл. –

+0

Спасибо, Майкл, я постараюсь сделать это. – sam