我正在尝试使用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()
返回的内容。
这里有几件事:
- 为什么不使用GWT-RPC与服务器进行通信?这是传输数据的首选方式
- 如果您仍然想使用servlet来处理请求,那么如何提交您的值?您的小部件是嵌入在窗体中,还是手动将其值编码在GET url中?如果使用表单,那么应该在小部件元素(
checkbox.getElement().setAttribute("name", "mycheck");
)上添加名称,并在servlet中通过request.getParameter("mycheck")
获得值 - 我从未使用过ServletFileUpload,但我相信它只会为您提供请求的不同文件部分
在代码的操作中。
String name = item.getFieldName();
String value = Streams.asString(item.openStream());
不要忘记Formpanel
上每个小部件的setName