0

嗨,我在 smartgwt 中有一个 listgrid,我需要一个按钮来将文件上传到服务器,我创建了一个普通的 servlet,并在我的项目的 web.xml 中声明了但我无法让它工作,让我出现 404 错误部署 。您可以在 gwt 中使用常规 servlet(及其 post 和 get 方法)吗?

提前致谢。

4

2 回答 2

0

GWT 以一种称为 GWT-RPC 的特殊方式在服务器端代码(在 servlet 容器上运行,如 tomcat 或 jetty)和客户端代码(GWT 编译的客户端 JS 文件)之间传输数据。

在此处输入图像描述

客户端需要知道将发送或接收到/从服务器和服务器的数据格式还必须知道客户端可以解析的数据格式(我们在数据的序列化和反序列化方面有严重的限制,因为一方面我们只有 javascript!)。这就是为什么您需要为远程 servlet 声明一个接口,GWT 使用它创建另一个异步接口并将您的服务调用限制在该接口。这就是为什么您不能将任何标准 servlet 与 GWT 一起使用。

于 2012-05-13T17:02:43.840 回答
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);
于 2012-05-14T05:09:02.227 回答