I'm writing a gwt site with a form using components from both gwt and
gwt-ext. Since I need to send a file I can't use gwt's RPC services
(GWTServletService), so I use a java servlet. I tried it in hosted
mode and with IE6 and I recieve data properly. However, using firefox
the servlet does not recieve anything.
This is the gwt code corresponding to the form:
final FormPanel uploadForm = new FormPanel();
uploadForm.setAction(GWT.getModuleBaseURL() +
"UploadFileServlet1");
uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART);
uploadForm.setMethod(FormPanel.METHOD_POST);
uploadForm.addFormHandler(new FormHandler(){
public void onSubmit(FormSubmitEvent event){
}
public void onSubmitComplete(FormSubmitCompleteEvent event){
//getExistBD();
//wait.hide();
//MessageBox.alert(event.getResults());
}
});
// Create a FormPanel and point it at a service.
final com.gwtext.client.widgets.form.FormPanel inUploadForm = new
com.gwtext.client.widgets.form.FormPanel();
inUploadForm.setPaddings(10);
inUploadForm.setLabelWidth(150);
FileUpload file = new FileUpload();
file.setName("file");
file.addStyleName("margin");
FieldSet fsBD = new FieldSet("Guardar en");
fsBD.addStyleName("fieldSet");
final Store statesStore = new SimpleStore(new String[]{"en",
"es"}, getStates());
statesStore.load();
ComboBox cbSaveMode = new ComboBox("Tipo de base de datos",
"saveMode", 200);
cbSaveMode.setEmptyText("Seleccionar...");
cbSaveMode.setStore(statesStore);
cbSaveMode.setDisplayField("es");
cbSaveMode.setValueField("en");
cbSaveMode.setReadOnly(true);
cbSaveMode.setForceSelection(true);
cbSaveMode.setMode(ComboBox.LOCAL);
cbSaveMode.setTriggerAction(ComboBox.ALL);
cbSaveMode.setBlankText("Este campo es obligatorio");
cbSaveMode.addListener(new ComboBoxListenerAdapter(){
public void onSelect(ComboBox comboBox, Record record, int
index)
{
cbBD.setValue("");
existBDStore.filter("en", comboBox.getValue());
//if(comboBox.getValue().equals("public")){
// cbBD.setStore(existPublicBDStore);
//}else if(comboBox.getValue().equals("private")){
// cbBD.setStore(existPrivateBDStore);
//}
}
});
cbBD = new ComboBox("", "nameExistBD", 200);
cbBD.setEmptyText("Seleccionar...");
cbBD.setDisplayField("name");
cbBD.setValueField("id");
cbBD.setLinked(true);
cbBD.setMode(ComboBox.LOCAL);
cbBD.setTriggerAction(ComboBox.ALL);
cbBD.setReadOnly(true);
cbBD.setForceSelection(true);
final TextField nameField = new TextField("", "nameNewBD", 200);
nameField.disable();
final Radio rExist = new Radio("Base de datos existente", "bd");
rExist.setChecked(true);
rExist.setHideLabel(true);
final Radio rNew = new Radio("Nueva base de datos", "bd");
rNew.setChecked(false);
rNew.setHideLabel(true);
rExist.addListener(new CheckboxListenerAdapter(){
public void onCheck(Checkbox field, boolean checked){
if(checked == true){
cbBD.enable();
nameField.disable();
}
}
});
rNew.addListener(new CheckboxListenerAdapter(){
public void onCheck(Checkbox field, boolean checked){
if(checked == true){
cbBD.disable();
nameField.enable();
}
}
});
fsBD.add(cbSaveMode);
fsBD.add(rExist);
fsBD.add(cbBD);
fsBD.add(rNew);
fsBD.add(nameField);
Button uploadSubmitButton = new Button("Submit", new
ButtonListenerAdapter(){
public void onClick(Button button, EventObject e) {
uploadForm.submit();
}
});
inUploadForm.add(file);
inUploadForm.add(fsBD);
inUploadForm.add(uploadSubmitButton);
uploadForm.add(inUploadForm);
return uploadForm;
And here's the java servlet code:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (!item.isFormField() &&
"file".equals(item.getFieldName())){
file = item.getInputStream();
}else if("saveMode".equals(item.getFieldName())){
saveMode =
Streams.asString(item.getInputStream());
}else if("nameExistBD".equals(item.getFieldName())){
existBD =
Streams.asString(item.getInputStream());
}else if("nameNewBD".equals(item.getFieldName())){
nameBD =
Streams.asString(item.getInputStream());
}
}
}catch(FileUploadException e){
e.printStackTrace();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
I've been trying to find out what happens for days and I don't
understand what happens. If someone can help me I will ve very
grateful.
Thanks in advance
--
You received this message because you are subscribed to the Google Groups
"GWT-Ext Developer Forum" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/gwt-ext?hl=en.