Получать данные от Formpanel в gwt
Я пытаюсь использовать FormPanel. на 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();
}
}
Пожалуйста, помогите получить значения checkBox и List Box.
3 ответа
Решение
См. Ответ на этот вопрос: Передача параметров вместе с формой загрузки нескольких частей / данных формы (Java Http Post Upload) о том, как получить значения на стороне сервера.
Чтобы отправить значения на сервер, вам нужно установить имя для каждого виджета через setName()
метод в виджетах ListBox и CheckBox. Имя это то, что item.getFieldName()
возвращается.
В Что делать из вашего кода.
String name = item.getFieldName();
String value = Streams.asString(item.openStream());
и не забудьте setName
каждого виджета на Formpanel
Несколько вещей здесь:
- Почему вы не используете GWT-RPC для связи с сервером? Это предпочтительный способ передачи данных.
- Если вы все еще хотите использовать сервлет для обработки запроса, как вы отправляете свои значения? Ваши виджеты встроены в форму или вы вручную кодируете их значения в GET-URL? Если вы используете форму, то вы должны добавить имена в элементе виджета (
checkbox.getElement().setAttribute("name", "mycheck");
) и в вашем сервлете вы получите значениеrequest.getParameter("mycheck")
, - Я никогда не использовал ServletFileUpload, но я считаю, что он предоставит вам только различные части файла вашего запроса.