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.


Reply via email to