This panel can be used to achieve interoperability with servers that accept traditional HTML form encoding. The following widgets (those that implement HasName) will be submitted to the server if they are contained within this panel:
In particular, FileUpload is only useful when used within a FormPanel, because the browser will only upload files using form submission.
public class FormPanelExample implements EntryPoint { public void onModuleLoad() { // Create a FormPanel and point it at a service. final FormPanel form = new FormPanel(); form.setAction("/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 panel to hold all of the form widgets. VerticalPanel panel = new VerticalPanel(); form.setWidget(panel); // Create a TextBox, giving it a name so that it will be submitted. final TextBox tb = new TextBox(); tb.setName("textBoxFormElement"); panel.add(tb); // Create a ListBox, giving it a name and some values to be associated with // its options. ListBox lb = new ListBox(); lb.setName("listBoxFormElement"); lb.addItem("foo", "fooValue"); lb.addItem("bar", "barValue"); lb.addItem("baz", "bazValue"); panel.add(lb); // Create a FileUpload widget. FileUpload upload = new FileUpload(); upload.setName("uploadFormElement"); panel.add(upload); // Add a 'submit' button. panel.add(new Button("Submit", new ClickListener() { public void onClick(Widget sender) { form.submit(); } })); // Add an event handler to the form. form.addFormHandler(new FormHandler() { public void onSubmit(FormSubmitEvent event) { // This event is fired just before the form is submitted. We can take // this opportunity to perform validation. if (tb.getText().length() == 0) { Window.alert("The text box must not be empty"); event.setCancelled(true); } } public void onSubmitComplete(FormSubmitCompleteEvent 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); } }
ENCODING_MULTIPART | Used with setEncoding(String) to specify that the form will be submitted using MIME encoding (necessary for FileUpload to work properly). |
ENCODING_URLENCODED | Used with setEncoding(String) to specify that the form will be submitted using traditional URL encoding. |
METHOD_GET | Used with setMethod(String) to specify that the form will be submitted using an HTTP GET request. |
METHOD_POST | Used with setMethod(String) to specify that the form will be submitted using an HTTP POST request (necessary for FileUpload to work properly). |
FormPanel() | Creates a new FormPanel. |
FormPanel(NamedFrame) | Creates a FormPanel that targets a NamedFrame. |
FormPanel(String) | Creates a new FormPanel. |
addFormHandler(FormHandler) | Adds a handler interface to receive click events. |
getAction() | Gets the 'action' associated with this form. |
getEncoding() | Gets the encoding used for submitting this form. |
getMethod() | Gets the HTTP method used for submitting this form. |
getTarget() | Gets the form's 'target'. |
onAttach() | This method is called when a widget is attached to the browser's document. |
onDetach() | This method is called when a widget is detached from the browser's document. |
onFormSubmit() | Called when the form is submitted. |
onFrameLoad() | Called when the target frame is done loading. |
removeFormHandler(FormHandler) | Removes a previously added handler interface. |
setAction(String) | Sets the 'action' associated with this form. |
setEncoding(String) | Sets the encoding used for submitting this form. |
setMethod(String) | Sets the HTTP method used for submitting this form. |
submit() | Submits the form. |
The back-end server is expected to respond with a content-type of 'text/html', meaning that the text returned will be treated as HTML. If any other content-type is specified by the server, then the result html sent in the onFormSubmit event will be unpredictable across browsers, and the FormHandler.onSubmitComplete(FormSubmitCompleteEvent) event may not fire at all.
When the FormPanel targets an external frame in this way, it will not fire the onFormSubmit event.
When the FormPanel targets an external frame in this way, it will not fire the onFormSubmit event.
null
to specify that the current
page be replacednull
if none has
been specified.
Subclasses that override this method must call
super.onAttach()
to ensure that the Widget has been attached
to its underlying Element.
Subclasses that override this method must call
super.onDetach()
to ensure that the Widget has been detached
from the underlying Element. Failure to do so will result in application
memory leaks due to circular references between DOM Elements and JavaScript
objects.
false
to cancel the submitThe FormPanel must not be detached (i.e. removed from its parent or otherwise disconnected from a RootPanel) until the submission is complete. Otherwise, notification of submission will fail.