GWT код загрузки файла - PullRequest
2 голосов
/ 20 июня 2011

Я хочу загрузить файл в свое приложение и указать путь, по которому файлы должны быть сохранены после загрузки в моей локальной системе. Я использую следующий код, но при нажатии кнопки «Отправить» не получаю ответа. Пожалуйста, сообщите мнекод, который отлично работает для загрузки файла в gwt.[код]

public class FormPanelExample implements EntryPoint {

  public void onModuleLoad() {
    // Create a FormPanel and point it at a service.
    final FormPanel form = new FormPanel();
    form.setAction("/myFormHandler");

    // Because we're going to add a FileUpload widget, we'll need to set the
    // form to use the POST method, and multipart MIME encoding.
    form.setEncoding(FormPanel.ENCODING_MULTIPART);
    form.setMethod(FormPanel.METHOD_POST);

    // Create a panel to hold all of the form widgets.
    VerticalPanel panel = new VerticalPanel();
    form.setWidget(panel);

    // Create a TextBox, giving it a name so that it will be submitted.
    final TextBox tb = new TextBox();
    tb.setName("textBoxFormElement");
    panel.add(tb);

    // Create a ListBox, giving it a name and some values to be associated with
    // its options.
    ListBox lb = new ListBox();
    lb.setName("listBoxFormElement");
    lb.addItem("foo", "fooValue");
    lb.addItem("bar", "barValue");
    lb.addItem("baz", "bazValue");
    panel.add(lb);

    // Create a FileUpload widget.
    FileUpload upload = new FileUpload();
    upload.setName("uploadFormElement");
    panel.add(upload);

    // Add a 'submit' button.
    panel.add(new Button("Submit", new ClickListener() {
      public void onClick(Widget sender) {
        form.submit();
      }
    }));

    // Add an event handler to the form.
    form.addFormHandler(new FormHandler() {
      public void onSubmit(FormSubmitEvent event) {
        // This event is fired just before the form is submitted. We can take
        // this opportunity to perform validation.
        if (tb.getText().length() == 0) {
          Window.alert("The text box must not be empty");
          event.setCancelled(true);
        }
      }

      public void onSubmitComplete(FormSubmitCompleteEvent event) {
        // When the form submission is successfully completed, this event is
        // fired. Assuming the service returned a response of type text/html,
        // we can get the result text here (see the FormPanel documentation for
        // further explanation).
        Window.alert(event.getResults());
      }
    });

    RootPanel.get().add(form);
  }
}

Спасибо

Amandeep

Ответы [ 3 ]

1 голос
/ 27 июня 2011

Я наконец-то решил проблему с помощью Ссылка

Это действительно то, что я искал.

0 голосов
/ 21 июня 2011

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

0 голосов
/ 20 июня 2011

Теперь я помню ... В коде FormPanel есть ошибка, из-за которой form.submit() не работает, когда тип формы изменяется по умолчанию (не знаю, исправлена ​​ли она еще в каком-либо выпуске GWT)).Если вы создадите «нативную» кнопку отправки следующим образом:

HTML nativeSubmitButton new HTML("<input class='gwt-Button' type='submit' value='" + buttonText + "' />")

Она отправит форму.

Недостатком является то, что вы не можете использовать какие-либо методы Button для этого объекта, так как это простая оболочка HTML.Поэтому отключение кнопки «Отправить» (чтобы избежать случайного двойного подтверждения и предоставления отзыва о том, что форма действительно отправляется) не будет работать.

Я создал для этой цели служебный класс DisableableSubmitButton,по сути, FlowPanel с одной кнопкой HTML, как указано выше, и одной кнопкой gwt, которая отключена, и некоторой логикой для переключения каждой из них видимой.Так как он не может изменить фактическое включенное состояние кнопки HTML, все обработчики отправки должны спросить этот класс, «включен» он или нет, и отменить событие, если оно есть.Если вы заинтересовались этой реализацией, я мог бы поделиться ею с вами (я не хочу, чтобы поток стека перекрывался с кодом, если вы не заинтересованы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...