formpanel.submit不会在GWT服务器上提交文件



我想把一个文件从客户端发送到服务器。

我的代码:

客户端

private FormPanel getFormPanel() {
    if (formPanel == null) {
        formPanel = new FormPanel();
    formPanel.setMethod(FormPanel.METHOD_POST);
        formPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
        formPanel.setAction(GWT.getHostPageBaseURL() +"UploadFileServlet");
        formPanel.setWidget(getFlexTable_1());
                System.out.println(GWT.getHostPageBaseURL() +"UploadFileServlet");
    }
    return formPanel;
}

getFlexTable_1()

flexTable.setWidget(1, 1, getFileUpload());

getFileUpload()

private FileUpload getFileUpload() {
    if (fileUpload == null) {
        fileUpload = new FileUpload();
        fileUpload.setName("upload");
    }
    return fileUpload;
}
private Button getAddButton() {
        if (addButton == null) {
            addButton = new Button("ADD");
            addButton.addClickHandler(new ClickHandler() {
                public void onClick(ClickEvent event) {
                               formPanel.submit();
        }
        });
    }
return addButton;

}

在服务器端

public class CmisFileUpload extends HttpServlet implements Servlet{
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        byte[] buffer = new byte[115200];//
        String fileName = null;
        String mimetype = null;
        String majorVersion = null;
        InputStream stream = null;
        System.out.println("ServletWorking Fine");
}

现在,当我选择一个文件并单击ADD按钮时,我无法在服务器端看到该代码System.out.println("ServletWorking Fine");的输出

客户端System.out.println(GWT.getHostPageBaseURL() +"UploadFileServlet");的输出是

http://127.0.0.1:8888/UploadFileServlet

当我直接在浏览器上使用这个url时,我会得到System.out.println("ServletWorking Fine");**的服务器端输出


已编辑

我又创建了一个用于文件上传的web应用程序

public class Uploadfile implements EntryPoint {
    FormPanel uploadForm = new FormPanel();
    public void onModuleLoad() {
        HorizontalPanel horizontalPanel = new HorizontalPanel();
      uploadForm.setAction(GWT.getHostPageBaseURL() +"UploadFileServlet"); 
        uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART); 
        uploadForm.setMethod(FormPanel.METHOD_POST); 
        horizontalPanel.add(uploadForm);
        // Create a panel to hold all of the form widgets. 
        VerticalPanel panel = new VerticalPanel(); 
        uploadForm.setWidget(panel); 
        FlexTable flexTable = new FlexTable();
        panel.add(flexTable);
        // Create a FileUpload widget. 
        FileUpload upload = new FileUpload(); 
        upload.setName("uploadFormElement"); 
        flexTable.setWidget(2, 3, upload);
        // panel.add(upload); 
        // Add a 'submit' button. 
        Button uploadSubmitButton = new Button("Submit"); 
        panel.add(uploadSubmitButton); 
        uploadSubmitButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                // TODO Auto-generated method stub
                 uploadForm.submit(); 
            }
        });
        uploadForm.addFormHandler(new FormHandler() { 
          public void onSubmit(FormSubmitEvent event) { 
          } 
          public void onSubmitComplete(FormSubmitCompleteEvent event) { 
            Window.alert(event.getResults()); 
          } 
        }); 
        RootPanel.get().add(horizontalPanel); 
    }
}

服务器

protected void doGet(HttpServletRequest request, 
            HttpServletResponse response) 
                            throws ServletException, IOException { 
      doPost(request, response);
  }
  protected void doPost(HttpServletRequest request, 
            HttpServletResponse response) 
                            throws ServletException, IOException { 
      System.out.println("working fine" );
   }

此代码运行良好

根据我的说法,代码之间没有区别。

请告诉我为什么formpanel.submit不能正常工作。

请帮忙。

hide()方法是否正在关闭窗口???如果是,则

删除formPanel.submit(); 之后的移动代码hide();

对于CCD_ 9使用CCD_。例如

uploadForm.addFormHandler(new FormHandler() {
    public void onSubmitComplete(FormSubmitCompleteEvent event) {
        hide();
    }
    public void onSubmit(FormSubmitEvent event) {
    }
});

原因:FormPanel在提交完成之前不得分离(即从其父级移除)。否则,提交通知将失败。

为什么为文件上传映射GET方法。GET请求方法正在为在浏览器中输入的url提供服务。删除GET请求映射,它就会工作。

对于POST请求映射,您可以使用MultipartFile作为RequestParam,如下所示

protected void uploadFileAndReconcilePayout1(@RequestParam("documentUpload") MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
        //code for file working
    }

相关内容

  • 没有找到相关文章

最新更新