| java.lang.Object com.opensymphony.webwork.components.Component com.opensymphony.webwork.components.UIBean com.opensymphony.webwork.components.FormButton com.opensymphony.webwork.components.Submit
Submit | public class Submit extends FormButton (Code) | |
Render a submit button. The submit tag is used together with the form tag to provide asynchronous form submissions.
The submit can have three different types of rendering:
- input: renders as html <input type="submit"...>
- image: renders as html <input type="image"...>
- button: renders as html <button type="submit"...>
Please note that the button type has advantages by adding the possibility to seperate the submitted value from the
text shown on the button face, but has issues with Microsoft Internet Explorer at least up to 6.0
Examples
<ww:submit value="%{'Submit'}" />
Render an image submit:
<ww:submit type="image" value="%{'Submit'}" label="Submit the form" src="submit.gif"/>
Render an button submit:
<ww:submit type="button" value="%{'Submit'}" label="Submit the form"/>
THE FOLLOWING IS ONLY VALID WHEN AJAX IS CONFIGURED
- resultDivId
- notifyTopics
- onLoadJS
- preInvokeJS
The remote form has three basic modes of use, using the resultDivId,
the notifyTopics, or the onLoadJS. You can mix and match any combination of
them to get your desired result. All of these examples are contained in the
Ajax example webapp. Lets go through some scenarios to see how you might use it:
Show the results in another div. If you want your results to be shown in
a div, use the resultDivId where the id is the id of the div you want them
shown in. This is an inner HTML approah. Your results get jammed into
the div for you. Here is a sample of this approach:
Remote form replacing another div:
<div id='two' style="border: 1px solid yellow;">Initial content</div>
<ww:form
id='theForm2'
cssStyle="border: 1px solid green;"
action='/AjaxRemoteForm.action'
method='post'
theme="ajax">
<input type='text' name='data' value='WebWork User' />
<ww:submit value="GO2" theme="ajax" resultDivId="two" />
</ww:form >
Notify other controls(divs) of a change. Using an pub-sub model you can
notify others that your control changed and they can take the appropriate action.
Most likely they will execute some action to refresh. The notifyTopics does this
for you. You can have many topic names in a comma delimited list.
eg: notifyTopics="newPerson, dataChanged" .
Here is an example of this approach:
<ww:form id="frm1" action="newPersonWithXMLResult" theme="ajax" >
<ww:textfield label="Name" name="person.name" value="person.name" size="20" required="true" />
<ww:submit id="submitBtn" value="Save" theme="ajax" cssClass="primary" notifyTopics="personUpdated, systemWorking" />
</ww:form >
<ww:div href="/listPeople.action" theme="ajax" errorText="error opps"
loadingText="loading..." id="cart-body" >
<ww:action namespace="" name="listPeople" executeResult="true" />
</ww:div>
Massage the results with JavaScript. Say that your result returns some h
appy XML and you want to parse it and do lots of cool things with it.
The way to do this is with a onLoadJS handler. Here you provide the name of
a JavaScript function to be called back with the result and the event type.
The only key is that you must use the variable names 'data' and 'type' when
defining the callback. For example: onLoadJS="myFancyDancyFunction(data, type)".
While I talked about XML in this example, your not limited to XML, the data in
the callback will be exactly whats returned as your result.
Here is an example of this approach:
<script language="JavaScript" type="text/javascript">
function doGreatThings(data, type) {
//Do whatever with your returned fragment...
//Perhapps.... if xml...
var xml = dojo.xml.domUtil.createDocumentFromText(data);
var people = xml.getElementsByTagName("person");
for(var i = 0;i < people.length; i ++){
var person = people[i];
var name = person.getAttribute("name")
var id = person.getAttribute("id")
alert('Thanks dude. Person: ' + name + ' saved great!!!');
}
}
</script>
<ww:form id="frm1" action="newPersonWithXMLResult" theme="ajax" >
<ww:textfield label="Name" name="person.name" value="person.name" size="20" required="true" />
<ww:submit id="submitBtn" value="Save" theme="ajax" cssClass="primary" onLoadJS="doGreatThings(data, type)" />
</ww:form>
author: Patrick Lightbody author: Rene Gielen version: $Revision: 2682 $ since: 2.2 |
evaluateExtraParams | public void evaluateExtraParams()(Code) | | |
evaluateParams | public void evaluateParams()(Code) | | |
getDefaultTemplate | protected String getDefaultTemplate()(Code) | | |
setLabel | public void setLabel(String label)(Code) | | Supply a submit button text apart from submit value. Will have no effect for input type submit, since button text will always be the value parameter. For the type image, alt parameter will be set to this value.
|
setListenTopics | public void setListenTopics(String listenTopics)(Code) | | Set listenTopics attribute.
|
setNotifyTopics | public void setNotifyTopics(String notifyTopics)(Code) | | Topic names to post an event to after the form has been submitted.
|
setOnLoadJS | public void setOnLoadJS(String onLoadJS)(Code) | | Javascript code that will be executed after the form has been submitted. The format is onLoadJS='yourMethodName(data,type)'. NOTE: the words data and type must be left like that if you want the event type and the returned data.
|
setPreInvokeJS | public void setPreInvokeJS(String preInvokeJS)(Code) | | Javascript code that will be executed before invokation. The format is preInvokeJS='yourMethodName(data,type)'.
|
setResultDivId | public void setResultDivId(String resultDivId)(Code) | | The id of the HTML element to place the result (this can the the form's id or any id on the page.
|
setSrc | public void setSrc(String src)(Code) | | Supply an image src for image type submit button. Will have no effect for types input and button.
|
supportsImageType | protected boolean supportsImageType()(Code) | | Indicate whether the concrete button supports the type "image".
true to indicate type image is supported. |
Methods inherited from com.opensymphony.webwork.components.Component | public void addAllParameters(Map params)(Code)(Java Doc) public void addParameter(String key, Object value)(Code)(Java Doc) public boolean altSyntax()(Code)(Java Doc) public void copyParams(Map params)(Code)(Java Doc) protected String determineActionURL(String action, String namespace, String method, HttpServletRequest req, HttpServletResponse res, Map parameters, String scheme, boolean includeContext, boolean encodeResult, boolean escapeXml)(Code)(Java Doc) protected String determineNamespace(String namespace, OgnlValueStack stack, HttpServletRequest req)(Code)(Java Doc) public boolean end(Writer writer, String body)(Code)(Java Doc) protected boolean end(Writer writer, String body, boolean popComponentStack)(Code)(Java Doc) protected WebWorkException fieldError(String field, String errorMsg, Exception e)(Code)(Java Doc) protected Component findAncestor(Class clazz)(Code)(Java Doc) protected String findString(String expr)(Code)(Java Doc) protected String findString(String expr, String field, String errorMsg)(Code)(Java Doc) protected Object findValue(String expr)(Code)(Java Doc) protected Object findValue(String expr, String field, String errorMsg)(Code)(Java Doc) protected Object findValue(String expr, Class toType)(Code)(Java Doc) public Stack getComponentStack()(Code)(Java Doc) public String getId()(Code)(Java Doc) public Map getParameters()(Code)(Java Doc) public OgnlValueStack getStack()(Code)(Java Doc) protected void popComponentStack()(Code)(Java Doc) public void setId(String id)(Code)(Java Doc) public boolean start(Writer writer)(Code)(Java Doc) protected String toString(Throwable t)(Code)(Java Doc) public boolean usesBody()(Code)(Java Doc)
|
|
|