1

我正在尝试使用 FormPanel。在表单面板上

  formPanel.setWidget(flexTable);

添加了一个复选框、一个列表框和 FileUpload

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

编写了一个 Servlet 代码来获取所有仅对 fileUpload 运行良好的值。如何获取一个 ListBox 的 checkBox 的值。

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

}

请帮助获取复选框和列表框的值。

4

3 回答 3

5

请参阅此问题的答案:Passing parameters as well as a multipart/form-data upload form (Java Http Post Upload),了解如何在服务器端获取值。

要将值发送到服务器,您需要通过setName()ListBox 和 CheckBox 小部件上的方法为每个小部件设置名称。名字就是item.getFieldName()回报。

于 2012-03-09T12:59:26.533 回答
2

这里有几件事:

  1. 为什么不使用 GWT-RPC 与服务器通信?这是传输数据的首选方式。
  2. 如果您仍然想使用 servlet 来处理请求,您如何提交您的值?您的小部件是嵌入在表单中还是在 GET-url 中手动编码它们的值?如果您使用表单,那么您应该在您的小部件元素 ( checkbox.getElement().setAttribute("name", "mycheck");) 上添加名称,并在您的 servlet 中通过request.getParameter("mycheck").
  3. 我从未使用过 ServletFileUpload,但我相信它只会为您提供请求的不同文件部分。
于 2012-03-09T12:56:59.353 回答
2

在如何处理您的代码中。

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

并且不要忘记上setName 的每个小部件Formpanel

于 2012-03-09T13:35:10.390 回答