2013-09-16 6 views
2

Вот html, сгенерированный до сих пор (с использованием GWT в качестве интерфейса), что я до сих пор воспроизводил класс GWT FileUpload.Работа с сетевыми проблемами при загрузке файлов

<input type="file" id="input" onchange="handleFiles(this.file)"> 

отлично работает с помощью HandleFileUploadServet.java, так как Java, как бэкэнда.

Чтобы справиться с этим, используя addSubmitCompleteHandler

form.addSubmitCompleteHandler(new SubmitCompleteHandler() {.. 

что эквивалентно штрафу

.submit(function(){ 
    //handle file response 
}) 

работ.

В этом случае проблема при загрузке файла. Если интернет отключен, нет error/exception/response, брошенный браузером.

Я хочу сообщить пользователю, что существует проблема с сетью.

Но браузер продолжает отправлять форму и не возвращаться из этого состояния.

Любые подсказки?

Спасибо за ваше время.

ответ

0

Проверьте в своем обработчике, если событие равно null?

form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() { 
     public void onSubmitComplete(SubmitCompleteEvent event) { 
      if(event != null){ 
        Window.alert("Upload OK!"); 
      }else 
        Window.alert("Upload fail"); 
    }); 

Но я думаю, что SubmitCompleteEvent никогда не запускается, если у вас есть проблемы с сетью.

Решение может быть, чтобы сделать таймер, когда вы отправляете файл:

public class ViewWidget { 

Form form; 
Timer timer = new Timer() { 
    @Override 
    public void run() { 
     Window.alert("Troubles with upload! Try again!"); 
    } 
}; 

public ViewWidget(){ 
    form.addSubmitHandler(new SubmitHandler() { 

     @Override 
     public void onSubmit(SubmitEvent event) { 
      timer.schedule(10000); 
     } 
    }); 

    form.addSubmitCompleteHandler(new SubmitCompleteHandler() { 

     @Override 
     public void onSubmitComplete(SubmitCompleteEvent event) { 
      //Cancel the timer 
      timer.cancel(); 

      if(event != null){ 
       //Do your Stuff 
       Window.alert("Upload Ok !"); 
      }else 
       Window.alert("Upload Fails"); 
     } 
    }); 
} 

Я не попробовать код, но он должен работать.

Надеюсь, это поможет.

Смежные вопросы