您好我在smartgwt中有一个listgrid,我需要一个按钮将文件上传到服务器,我创建了一个普通的servlet并在我的项目的web.xml中声明但我无法使其工作,make我部署404错误。您可以使用常规servlet(使用post和get方法)和gwt?
提前致谢。
答案 0 :(得分:0)
GWT在服务器端代码之间传输数据(在像tomcat或jetty这样的servlet容器上运行)&客户端代码(GWT编译的客户端JS文件)以一种称为GWT-RPC的特殊方式。
客户需要知道将向/从服务器发送或接收的数据格式。服务器也必须知道客户端可以解析的数据格式(我们在数据的序列化和反序列化方面有严重的限制,因为我们只有javascript!)。这就是为什么你需要声明远程servlet和接口的接口的原因。 GWT使用它创建另一个异步接口&限制您对该接口的服务调用。 &安培;这就是为什么你不能在GWT中使用任何标准的servlet。
答案 1 :(得分:0)
HttpServlet
可与smartgwt一起使用。您需要DynamicForm
并设置.setCanSubmit(true);
示例代码:
final String DEFAULT_FILE_UPLOAD_SERVICE_PATH = "upload";
final String TARGET = "uploadTarget";
VLayout body = new VLayout();
uploadForm = new DynamicForm();
// initialise the hidden frame
NamedFrame frame = new NamedFrame(TARGET);
frame.setWidth("1px");
frame.setHeight("1px");
frame.setVisible(false);
uploadForm.setEncoding(Encoding.MULTIPART);
uploadForm.setMethod(FormMethod.POST);
// set the (hidden) form target
uploadForm.setTarget(TARGET);
uploadForm.setAction(DEFAULT_FILE_UPLOAD_SERVICE_PATH);
// initialise the File name field
uploadItem = new UploadItem("filename");
uploadItem.setName("filename");
uploadItem.setTitle("File name");
// set the fields into the form
uploadForm.setFields(uploadItem);
// add the Upload Form and the (hidden) Frame to the main layout container
body.addMember(uploadForm);
body.addMember(frame);