Adding some more info...
In the debugger when I set a breakpoint in 'onInitialize' at this line:* RootPanel.get().add(form); * the form seems to be built properly as follows: <form method="post" enctype="multipart/form-data" action=" http://127.0.0.1:8888/showcase/myFormHandler" target="FormPanel_1"><table cellpadding="0" cellspacing="0"><tbody><tr><td style="vertical-align: top;" align="left"><div class="gwt-HTML"><b>Select a file:</b></div></td></tr><tr><td style="vertical-align: top;" align="left"><input id="gwt-debug-cwFileUpload" class="gwt-FileUpload" type="file"></td></tr><tr><td style="vertical-align: top;" align="left"><div class="gwt-HTML"><br></div></td></tr><tr><td style="vertical-align: top;" align="left"><button class="gwt-Button" tabindex="0" type="button">Upload File</button></td></tr></tbody></table></form> But under firebug, the form shows up as this... <form target="FormPanel_1" action=" http://127.0.0.1:8888/showcase/myFormHandler" enctype="multipart/form-data" method="post"></form> So seems like there's something in the Showcase application framework that's causing this. Any ideas? On Wed, May 5, 2010 at 8:01 AM, Something Something < mailinglist...@gmail.com> wrote: > Hello, > > I am writing a GWT application based on the 'Showcase' sample ( > http://gwt.google.com/samples/Showcase/Showcase.html). I am trying to get > the 'File Upload' feature to work. I have changed the 'CwFileUpload' class > as follows: > > public Widget onInitialize() { > // Create a FormPanel and point it at a service. > * final FormPanel form = new FormPanel();* > form.setAction(GWT.getModuleBaseURL() + "*myFormHandler*"); > > // Because we're going to add a FileUpload widget, we'll need to set > the > // form to use the POST method, and multipart MIME encoding. > form.setEncoding(FormPanel.ENCODING_MULTIPART); > form.setMethod(FormPanel.METHOD_POST); > > // Create a vertical panel to align the content > VerticalPanel vPanel = new VerticalPanel(); > form.setWidget(vPanel); > // Add a label > vPanel.add(new HTML(constants.cwFileUploadSelectFile())); > > // Add a file upload widget > final FileUpload fileUpload = new FileUpload(); > fileUpload.ensureDebugId("cwFileUpload"); > vPanel.add(fileUpload); > > // Add a button to upload the file > Button uploadButton = new Button(constants.cwFileUploadButton()); > uploadButton.addClickHandler(new ClickHandler() { > public void onClick(ClickEvent event) { > String filename = fileUpload.getFilename(); > if (filename.length() == 0) { > Window.alert(constants.cwFileUploadNoFileError()); > } else { > // Window.alert(constants.cwFileUploadSuccessful()); > form.submit(); > } > } > }); > vPanel.add(new HTML("<br>")); > vPanel.add(uploadButton); > > // Add an event handler to the form. > form.addSubmitHandler(new SubmitHandler() { > @Override > public void onSubmit(SubmitEvent event) { > if (fileUpload.getFilename().length() == 0) { > Window.alert("Must select a valid file"); > event.cancel(); > } > } > }); > > form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() { > public void onSubmitComplete(SubmitCompleteEvent event) { > // When the form submission is successfully completed, this > // event is fired. Assuming the service returned a response of type > // text/html, we can get the result text here (see the FormPanel > // documentation for further explanation). > Window.alert(event.getResults()); > } > }); > * RootPanel.get().add(form);* > > // Return the layout panel > return vPanel; > } > > > The code in *MyFormHandler *is given below (Note: This was directly copied > from the Google Appengine FAQ page): > > public void *doPost*(HttpServletRequest req, HttpServletResponse res) > throws ServletException, IOException { > try { > ServletFileUpload upload = new ServletFileUpload(); > res.setContentType("text/plain"); > > FileItemIterator iterator = upload.getItemIterator(req); > while (iterator.hasNext()) { > // IT NEVER GETS IN THIS LOOP > FileItemStream item = iterator.next(); > InputStream stream = item.openStream(); > > if (item.isFormField()) { > LOG.warning("Got a form field: " + item.getFieldName()); > } else { > LOG.warning("Got an uploaded file: " + item.getFieldName() + > ", name = " + item.getName()); > > // You now have the filename (item.getName() and the > // contents (which you can read from stream). Here we just > // print them back out to the servlet output stream, but you > // will probably want to do something more interesting (for > // example, wrap them in a Blob and commit them to the > // datastore). > int len; > byte[] buffer = new byte[8192]; > while ((len = stream.read(buffer, 0, buffer.length)) != -1) { > res.getOutputStream().write(buffer, 0, len); > } > } > } > } catch (Exception ex) { > throw new ServletException(ex); > } > } > > When form is submitted, no "FileItems" (meaning form fields) are returned > in the Request object. I have tried moving the FormPanel to Showcase.java > and tried several combinations, but nothing is working :( Any ideas on > debugging this further will be greatly appreciated. Please help. > > Thank you. > > > -- > You received this message because you are subscribed to the Google Groups > "Google Web Toolkit" group. > To post to this group, send email to google-web-tool...@googlegroups.com. > To unsubscribe from this group, send email to > google-web-toolkit+unsubscr...@googlegroups.com<google-web-toolkit%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-web-toolkit?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.