您好我正在使用GWT使用servlet发送文件。
最初我试图只将文件发送到服务器。这很好。
现在在af ormPanel我添加了3个Listbox。
private ListBox propertyNamelist = getListBox("propertyName");
private ListBox propertyTypeList = getListBox("propertyType");
private ListBox propertyValueList = getListBox("propertyValue");
private ListBox getListBox(String name){
listbox = new ListBox();
listbox.setName(name);
return listbox;
}
然后将其添加到FormPanel。
formPanel.setWidget(propertyNamelist);
formPanel.setWidget(propertyTypeList);
formPanel.setWidget(propertyValueList);
formPanel.submit();
在服务器端。
try {
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(request);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
stream = item.openStream();
if (item.isFormField()) {
log.warning("Got a form field: " + item.getFieldName());
System.out.println(" chk fg " +item.getFieldName() +" = "+ Streams.asString(item.openStream()));
} else {
log.warning("Got an uploaded file: " + item.getFieldName()
+ ", name = " + item.getName());
fileName = item.getName();
mimetype = item.getContentType();
}
}
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出:
WARNING: Got a form field: propertyValue
Jun 11, 2012 11:37:55 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: /UploadFileServlet: org.apache.commons.fileupload.FileItemStream$ItemSkippedException
chk fg propertyValue = motivation
根据我的动机是列表框PropertyValue
的第一个值,其中列表框中有更多值。
还有更多应该显示的列表框。
我无法理解这是否正在发生。
注意:我无法通过RPC发送Listbox,因为这些列表框与要发送到服务器和服务器到外部存储库的文件有关。
有人提供帮助。
答案 0 :(得分:2)
正如其名称暗示setWidget
上的FormPanel
替换了FormPanel
小部件的内容。
您想在FormPanel
中放置几个小部件,因此请使用中间容器(例如FlowPanel
)将您的小部件放入:
// put all widgets together in some container (you can have a more complex layout)
FlowPanel container = new FlowPanel();
container.add(fileUpload);
container.add(propertyNameList);
container.add(propertyTypeList);
container.add(propertyValueList);
// set the container as the content of the form, so named form widgets will get
// their value sent to the server.
formPanel.setWidget(container);