2012-05-13 2 views
0

Привет, у меня есть listgrid в smartgwt, и мне нужно иметь кнопку для загрузки файла на сервер, я создал обычный сервлет и объявил в web.xml моего проекта, но я не могу это сделать работа, сделайте мне ошибку 404 для развертывания. Вы можете использовать регулярные сервлеты (со своими post и get методами) с gwt?smartgwt servlet use

Заранее благодарен.

ответ

0

GWT передает данные между боковым кодом сервера (работает на контейнере сервлетов, например, tomcat или причал) & клиентский код (GWT скомпилированные клиентские JS-файлы) особым образом называется GWT-RPC.

enter image description here

Клиент обязан знать формат данных, который будет отправлять или принимать к/от сервера & сервер также должен знает о формате данных, которые клиент может разобрать (у нас есть серьезные ограничения в сериализации & десериализации данных, потому что с одной стороны у нас есть только javascript!). Вот почему вам нужно объявить интерфейс для удаленного сервлета. & GWT использует другой асинхронный интерфейс. & ограничивает ваши вызовы сервисов этому интерфейсу. & Вот почему вы не можете использовать стандартный сервлет с GWT.

+0

Спасибо и очень много ...: D – Mariah

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);