Получать данные от Formpanel в gwt

Я пытаюсь использовать FormPanel. на FormPanel

  formPanel.setWidget(flexTable);

Добавлен флажок, listBox и FileUpload

flexTable.setWidget(4, 1,listBox);
flexTable.setWidget(5, 1, fileUpload);
flexTable.setWidget(6, 1, checkBox);
 // More Code

Код сервлета написан для получения всех значений, которые работают нормально только для fileUpload. Как получить значение checkBox и ListBox.

protected void doPost(HttpServletRequest request, 
        HttpServletResponse response) 
                        throws ServletException, IOException { 

    byte[] buffer = new byte[1310720];// 10 MB

     try {

        ServletFileUpload upload = new ServletFileUpload();

        FileItemIterator iterator = upload.getItemIterator(request);

         while (iterator.hasNext()) {
             FileItemStream item = iterator.next();
             InputStream stream = item.openStream();

             if (item.isFormField()) {
                  // WHAT TO DO??

                } else {

                  int len;

                  while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
                    response.getOutputStream().write(buffer, 0, len);                       
                  }
                }
         }

    } catch (FileUploadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

Пожалуйста, помогите получить значения checkBox и List Box.

3 ответа

Решение

См. Ответ на этот вопрос: Передача параметров вместе с формой загрузки нескольких частей / данных формы (Java Http Post Upload) о том, как получить значения на стороне сервера.

Чтобы отправить значения на сервер, вам нужно установить имя для каждого виджета через setName() метод в виджетах ListBox и CheckBox. Имя это то, что item.getFieldName() возвращается.

В Что делать из вашего кода.

  String name  = item.getFieldName();
                  String value = Streams.asString(item.openStream());

и не забудьте setName каждого виджета на Formpanel

Несколько вещей здесь:

  1. Почему вы не используете GWT-RPC для связи с сервером? Это предпочтительный способ передачи данных.
  2. Если вы все еще хотите использовать сервлет для обработки запроса, как вы отправляете свои значения? Ваши виджеты встроены в форму или вы вручную кодируете их значения в GET-URL? Если вы используете форму, то вы должны добавить имена в элементе виджета (checkbox.getElement().setAttribute("name", "mycheck");) и в вашем сервлете вы получите значение request.getParameter("mycheck"),
  3. Я никогда не использовал ServletFileUpload, но я считаю, что он предоставит вам только различные части файла вашего запроса.
Другие вопросы по тегам