从gwt中的Formpanel接收数据



我正在尝试使用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

编写了一个Servlet代码来获取所有仅对fileUpload运行良好的值。如何获取列表框中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();
    }

}

Plz帮助获取checkBox和List Box的值。

看看这个问题的答案:将参数与多部分/表单数据上传表单(Java Http Post upload)一起传递,了解如何在服务器端获取值。

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

这里有几件事:

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

在代码的操作中。

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

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

相关内容

  • 没有找到相关文章

最新更新