Java 不刷新或转发的GWT表单上载

Java 不刷新或转发的GWT表单上载,java,gwt,Java,Gwt,我想知道是否应该为GWTcom.google.GWT.user.client.ui.FileUpload做些什么 在不刷新或转发的情况下上载到服务器 我已经从这里实现了表单上传,但是它将浏览器页面转发到目标服务器URL 如何在不转发的情况下实现表单上载 更新: final FormPanel form = new FormPanel(); form.setAction("/upload"); form.setEncoding(FormPanel.ENCODING_MULT

我想知道是否应该为GWT
com.google.GWT.user.client.ui.FileUpload做些什么
在不刷新或转发的情况下上载到服务器

我已经从这里实现了表单上传,但是它将浏览器页面转发到目标服务器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());
      }
    }); 

在我看来,你让事情变得比实际更复杂

我不明白为什么,如果您使用的是小部件,那么您会试图手动管理DOM

1.-使用GWT方式将表单面板连接到根面板,否则将破坏小部件层次结构

 RootPanel.get("form_panel").add(panel);
2.-尽量不要手动使用接收器事件,并使用小部件中已有的方法:

 submit.addClickHandler(new ClickHandler() {
   public void onClick(ClickEvent event) {
      form.submit();
   }
 });
FormPanel
将其目标设置为隐藏的
,因此您永远不会被重定向到其他页面


顺便说一句,我更愿意使用这个库,它简化了GWT中这么多的上传代码,并添加了许多附加功能。

我认为,您正在使事情变得比实际情况更复杂

我不明白为什么,如果您使用的是小部件,那么您会试图手动管理DOM

1.-使用GWT方式将表单面板连接到根面板,否则将破坏小部件层次结构

 RootPanel.get("form_panel").add(panel);
2.-尽量不要手动使用接收器事件,并使用小部件中已有的方法:

 submit.addClickHandler(new ClickHandler() {
   public void onClick(ClickEvent event) {
      form.submit();
   }
 });
FormPanel
将其目标设置为隐藏的
,因此您永远不会被重定向到其他页面


顺便说一句,我更愿意使用这个库,它简化了GWT中这么多的上传代码,并添加了许多附加功能。

我认为,您正在使事情变得比实际情况更复杂

我不明白为什么,如果您使用的是小部件,那么您会试图手动管理DOM

1.-使用GWT方式将表单面板连接到根面板,否则将破坏小部件层次结构

 RootPanel.get("form_panel").add(panel);
2.-尽量不要手动使用接收器事件,并使用小部件中已有的方法:

 submit.addClickHandler(new ClickHandler() {
   public void onClick(ClickEvent event) {
      form.submit();
   }
 });
FormPanel
将其目标设置为隐藏的
,因此您永远不会被重定向到其他页面


顺便说一句,我更愿意使用这个库,它简化了GWT中这么多的上传代码,并添加了许多附加功能。

我认为,您正在使事情变得比实际情况更复杂

我不明白为什么,如果您使用的是小部件,那么您会试图手动管理DOM

1.-使用GWT方式将表单面板连接到根面板,否则将破坏小部件层次结构

 RootPanel.get("form_panel").add(panel);
2.-尽量不要手动使用接收器事件,并使用小部件中已有的方法:

 submit.addClickHandler(new ClickHandler() {
   public void onClick(ClickEvent event) {
      form.submit();
   }
 });
FormPanel
将其目标设置为隐藏的
,因此您永远不会被重定向到其他页面


顺便说一句,我宁愿使用这个库,它简化了GWT中这么多的上传代码,并添加了许多附加功能。

我在GWT上传库之前使用过

你不需要重新发现美国

感谢莫西集团


我在gwt上载库之前使用过

你不需要重新发现美国

感谢莫西集团


我在gwt上载库之前使用过

你不需要重新发现美国

感谢莫西集团


我在gwt上载库之前使用过

你不需要重新发现美国

感谢莫西集团


你能发布一些代码吗?@mit我用代码更新了问题你能发布一些代码吗?@mit我用代码更新了问题你能发布一些代码吗?@mit我用代码更新了问题你能发布一些代码吗?@mit我用代码更新了问题你是说这个代码:DOM.getElementById(“表单面板”).appendChild(panel.getElement());我需要这样做,因为表单面板是由jQuery动态创建的
RootPanel.get(“id\u元素”)
也可以用于动态创建的元素您的意思是:DOM.getElementById(“表单面板”).appendChild(panel.getElement());我需要这样做,因为表单面板是由jQuery动态创建的
RootPanel.get(“id\u元素”)
也可以用于动态创建的元素您的意思是:DOM.getElementById(“表单面板”).appendChild(panel.getElement());我需要这样做,因为表单面板是由jQuery动态创建的
RootPanel.get(“id\u元素”)
也可以用于动态创建的元素您的意思是:DOM.getElementById(“表单面板”).appendChild(panel.getElement());我需要这样做,因为表单面板是由jQuery动态创建的
RootPanel.get(“id\u元素”)
也可以处理动态创建的元素