formpanel.submit не отправляет файл на сервер GWT
Я хочу отправить файл с клиента на сервер.
Мой код:
Клиентская сторона:
private FormPanel getFormPanel() {
if (formPanel == null) {
formPanel = new FormPanel();
formPanel.setMethod(FormPanel.METHOD_POST);
formPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
formPanel.setAction(GWT.getHostPageBaseURL() +"UploadFileServlet");
formPanel.setWidget(getFlexTable_1());
System.out.println(GWT.getHostPageBaseURL() +"UploadFileServlet");
}
return formPanel;
}
ВgetFlexTable_1()
flexTable.setWidget(1, 1, getFileUpload());
ВgetFileUpload()
private FileUpload getFileUpload() {
if (fileUpload == null) {
fileUpload = new FileUpload();
fileUpload.setName("upload");
}
return fileUpload;
}
private Button getAddButton() {
if (addButton == null) {
addButton = new Button("ADD");
addButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
formPanel.submit();
}
});
}
return addButton;
}
На стороне сервера
public class CmisFileUpload extends HttpServlet implements Servlet{
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
byte[] buffer = new byte[115200];//
String fileName = null;
String mimetype = null;
String majorVersion = null;
InputStream stream = null;
System.out.println("ServletWorking Fine");
}
Теперь, когда я выбираю файл и нажимаю кнопку "ДОБАВИТЬ", я не могу увидеть вывод этого кода на стороне сервера.System.out.println("ServletWorking Fine");
Выход из System.out.println(GWT.getHostPageBaseURL() +"UploadFileServlet");
на стороне клиента
http://127.0.0.1:8888/UploadFileServlet
и когда я использую этот URL-адрес непосредственно в браузере, я получаю вывод на стороне сервера для System.out.println("ServletWorking Fine");
**
отредактированный
Я создал еще одно веб-приложение для загрузки файлов
public class Uploadfile implements EntryPoint {
FormPanel uploadForm = new FormPanel();
public void onModuleLoad() {
HorizontalPanel horizontalPanel = new HorizontalPanel();
uploadForm.setAction(GWT.getHostPageBaseURL() +"UploadFileServlet");
uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART);
uploadForm.setMethod(FormPanel.METHOD_POST);
horizontalPanel.add(uploadForm);
// Create a panel to hold all of the form widgets.
VerticalPanel panel = new VerticalPanel();
uploadForm.setWidget(panel);
FlexTable flexTable = new FlexTable();
panel.add(flexTable);
// Create a FileUpload widget.
FileUpload upload = new FileUpload();
upload.setName("uploadFormElement");
flexTable.setWidget(2, 3, upload);
// panel.add(upload);
// Add a 'submit' button.
Button uploadSubmitButton = new Button("Submit");
panel.add(uploadSubmitButton);
uploadSubmitButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// TODO Auto-generated method stub
uploadForm.submit();
}
});
uploadForm.addFormHandler(new FormHandler() {
public void onSubmit(FormSubmitEvent event) {
}
public void onSubmitComplete(FormSubmitCompleteEvent event) {
Window.alert(event.getResults());
}
});
RootPanel.get().add(horizontalPanel);
}
}
сервер
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("working fine" );
}
Этот код работает нормально
По мне нет никакой разницы между кодами.
Скажите, пожалуйста, почему formpanel.submit не работает должным образом.
Пожалуйста, помогите.
2 ответа
Является hide()
метод закрывает окно??? Если да, то
удалить код перемещения hide();
после formPanel.submit();
за hide()
использование FormHandler
, например
uploadForm.addFormHandler(new FormHandler() {
public void onSubmitComplete(FormSubmitCompleteEvent event) {
hide();
}
public void onSubmit(FormSubmitEvent event) {
}
});
причина: FormPanel
не должен быть отсоединен (т.е. удален от своего родителя до тех пор, пока отправка не будет завершена. В противном случае уведомление о представлении не будет выполнено.
Почему вы выбрали метод GET для загрузки файла. Метод запроса GET служит для URL, введенного в браузере. Удалите GET Request Map, она будет работать.
Для карты запроса POST вы можете использовать MultipartFile для RequestParam, как показано ниже
protected void uploadFileAndReconcilePayout1(@RequestParam("documentUpload") MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
//code for file working
}