получать данные от Formpanel в gwt - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь использовать FormPanel.oN 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();
    }

}

Plz поможет получить значения checkBox и List Box.

Ответы [ 3 ]

5 голосов
/ 09 марта 2012

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

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

2 голосов
/ 09 марта 2012

В Что делать с вашим кодом.

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

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

2 голосов
/ 09 марта 2012

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

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