- SmartGWT (a Google Web Toolkit with a SmartClient library)
- It is LGPL, so no proprietary extension on a place
- You don't want to use ExtGWT just only for one single upload function and thus risk your project won't really work on older browsers that are still might be in use.
- You want it nicely done at background with a clean callback, of course. :-)
- In com.smartgwt.client.widgets.form.DynamicForm, set it to multipart by passing it Encoding.MULTIPART.
- Create an internal iframe, using com.google.gwt.user.client.ui.NamedFrame and call it, let's say "foo" (sure no better name came into my head now, LOL). Make it 1x1 pixel width and set visibility to false. It is not actually a thing user needs to see.
- Now use setTarget("foo") method to let your DynamicForm use that it as a target.
- Also use setAction(url-to-your-processing-servlet) to let DynamicForm actually send stuff there. You can do it like ("upload" — is your servlet accessible):
.setAction(GWT.getModuleBaseURL() + "/upload");
- Now, add mouse click handler to your IButton and use submitForm() method out of DynamicForm instance object. It will send the form and that iframe we created earlier will receive a result. This way we achieve upload in background.
That's it. Implementation is up to you — use imagination... :-)