Search code examples
javagwtservletsgwt2formpanel

Not able to send ListBox and file together


Hi i am using GWT to send a file using a servlet.

Initially iwas trying to send only file to server. That was working fine.

Now in af ormPanel I added 3 Listbox.

private ListBox propertyNamelist = getListBox("propertyName");
    private ListBox propertyTypeList = getListBox("propertyType");
    private ListBox propertyValueList = getListBox("propertyValue");

private ListBox getListBox(String name){

            listbox = new ListBox();
            listbox.setName(name);

        return listbox;
    }

it is then added to FormPanel.

formPanel.setWidget(propertyNamelist);
formPanel.setWidget(propertyTypeList);
formPanel.setWidget(propertyValueList);
formPanel.submit();

On the Server side.

try {

        ServletFileUpload upload = new ServletFileUpload();

        FileItemIterator iterator = upload.getItemIterator(request);
        while (iterator.hasNext()) {
            FileItemStream item = iterator.next();
             stream = item.openStream();

            if (item.isFormField()) {
                log.warning("Got a form field: " + item.getFieldName());
                System.out.println(" chk fg " +item.getFieldName() +"  =  "+ Streams.asString(item.openStream()));


            } else {

                log.warning("Got an uploaded file: " + item.getFieldName()
                        + ", name = " + item.getName());
                fileName = item.getName();
                mimetype = item.getContentType();

            }
        }

    }catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Output :

WARNING: Got a form field: propertyValue
Jun 11, 2012 11:37:55 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: /UploadFileServlet: org.apache.commons.fileupload.FileItemStream$ItemSkippedException
 chk fg propertyValue  =  motivation

according to me motivation is a first value of listbox PropertyValue, where as there are more values in list box.

And there are more list box which should be displayed.

I am not able to understand y this is happening.

Note : I cant send Listbox through RPC cause these list box is related to file which is to send to server and server to external repository.

Some one plz Help.


Solution

  • As its name imply setWidget on FormPanel replaces the content of the FormPanel widget.

    You want to put several widgets inside your FormPanel, so use an intermediary container (such as a FlowPanel) to put your widgets in:

    // put all widgets together in some container (you can have a more complex layout)
    FlowPanel container = new FlowPanel();
    container.add(fileUpload);
    container.add(propertyNameList);
    container.add(propertyTypeList);
    container.add(propertyValueList);
    
    // set the container as the content of the form, so named form widgets will get
    // their value sent to the server.
    formPanel.setWidget(container);