New*_*ner 1 gwt formpanel gwt2
我想从客户端发送文件到服务器.
我的代码:
客户方:
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;
}
Run Code Online (Sandbox Code Playgroud)
在 getFlexTable_1()
flexTable.setWidget(1, 1, getFileUpload());
Run Code Online (Sandbox Code Playgroud)
在 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;
Run Code Online (Sandbox Code Playgroud)
}
在服务器端
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");
}
Run Code Online (Sandbox Code Playgroud)
现在,当我选择一个文件并单击"添加"按钮时,我无法在服务器端看到此代码的输出 System.out.println("ServletWorking Fine");
System.out.println(GWT.getHostPageBaseURL() +"UploadFileServlet");客户端的outPut 是
http://127.0.0.1:8888/UploadFileServlet
Run Code Online (Sandbox Code Playgroud)
当我直接在浏览器上使用此URL时,我获得System.out.println("ServletWorking Fine");**的服务器端输出
编辑
我创建了另一个用于文件上传的Web应用程序
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);
}
}
Run Code Online (Sandbox Code Playgroud)
服务器
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" );
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常
据我所知,代码之间没有区别.
Plz告诉我为什么formpanel.submit不能正常工作.
Plz的帮助.
被hide()方法正在关闭窗口??? 如果是的话
除去移动代码hide();后formPanel.submit();
对于hide()使用FormHandler.例如
uploadForm.addFormHandler(new FormHandler() {
public void onSubmitComplete(FormSubmitCompleteEvent event) {
hide();
}
public void onSubmit(FormSubmitEvent event) {
}
});
Run Code Online (Sandbox Code Playgroud)
原因:FormPanel不得分离(即在提交完成之前将其从父项中删除.否则,提交通知将失败.