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");
}

Теперь, когда я выбираю файл и нажимаю кнопку "ДОБАВИТЬ", я не могу увидеть вывод этого кода на стороне сервера.System.out.println("ServletWorking Fine");

Выход из System.out.println(GWT.getHostPageBaseURL() +"UploadFileServlet"); на стороне клиента

http://127.0.0.1:8888/UploadFileServlet

и когда я использую этот URL-адрес непосредственно в браузере, я получаю вывод на стороне сервера для System.out.println("ServletWorking Fine");**


отредактированный

Я создал еще одно веб-приложение для загрузки файлов

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 не работает должным образом.

Пожалуйста, помогите.

2 ответа

Решение

Является hide() метод закрывает окно??? Если да, то

удалить код перемещения hide(); после formPanel.submit();

за hide() использование FormHandler, например

uploadForm.addFormHandler(new FormHandler() {

    public void onSubmitComplete(FormSubmitCompleteEvent event) {
        hide();
    }

    public void onSubmit(FormSubmitEvent event) {

    }

});

причина: FormPanel не должен быть отсоединен (т.е. удален от своего родителя до тех пор, пока отправка не будет завершена. В противном случае уведомление о представлении не будет выполнено.

Почему вы выбрали метод GET для загрузки файла. Метод запроса GET служит для URL, введенного в браузере. Удалите GET Request Map, она будет работать.

Для карты запроса POST вы можете использовать MultipartFile для RequestParam, как показано ниже

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

    }
Другие вопросы по тегам