簡體   English   中英

GWT表單上傳而無需刷新或轉發

[英]GWT Form upload without refresh or forward

我想知道是否應該對GWT com.google.gwt.user.client.ui.FileUpload進行上傳而不上傳或轉發到服務器的操作。

我已經從此Java Doc實現了表單上傳,但是它將瀏覽器頁面轉發到目標服務器URL。

如何在不轉發的情況下實現表單上傳?

更新:

    final FormPanel form = new FormPanel();
    form.setAction("/upload");
    form.setEncoding(FormPanel.ENCODING_MULTIPART); 
    form.setMethod(FormPanel.METHOD_POST);

    VerticalPanel panel = new VerticalPanel();
    form.setWidget(panel);
    final TextBox tb = new TextBox();
    tb.setName("textBoxFormElement");
    panel.add(tb);

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

    DOM.getElementById("form_panel").appendChild(panel.getElement());

    Button submit = new Button("Submit");
    panel.add(submit);

    DOM.sinkEvents(submit.getElement(), Event.ONCLICK);
    DOM.setEventListener(submit.getElement(), new EventListener(){
    @Override
    public void onBrowserEvent(Event event) {
        if (event.getTypeInt() == Event.ONCLICK) {
            form.submit();
            return;
        }
    }});
    form.addSubmitHandler(new FormPanel.SubmitHandler() {
      public void onSubmit(SubmitEvent event) {
        if (tb.getText().length() == 0) {
          Window.alert("The text box must not be empty");
          event.cancel();
        }
      }
    });
    form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
      public void onSubmitComplete(SubmitCompleteEvent event) {
        Window.alert(event.getResults());
      }
    }); 

IMO,您正在使事情變得比他們復雜。

我不明白為什么,如果您使用的是小部件,那么您將嘗試手動管理DOM。

1.-使用GWT方式將表單面板附加到根面板,否則將破壞小部件層次結構。

 RootPanel.get("form_panel").add(panel);

2.-盡量不要手動使用接收器事件,而應使用小部件中已經存在的方法:

 submit.addClickHandler(new ClickHandler() {
   public void onClick(ClickEvent event) {
      form.submit();
   }
 });

FormPanel將其目標設置為隱藏的<iframe>因此您將永遠不會重定向到另一個頁面。

順便說一句,我寧願使用gwtupload庫,該庫簡化了GWT中的大量上載代碼,並添加了許多其他功能。

我在gwt-upload庫之前使用過。

您不需要重新發現美國。

謝謝莫克西組

gwt-upload-project頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM