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.

Reply via email to