Description: Generates an AJAX request handler for a long server running, with progress report.
JavaDoc: Click here
Body content: JSP content.
Attributes:
| Name | Description | Data type | Required | Default value |
| id | the ID for this AJAX request | String | No | Auto-generated |
| ajaxEvent | the AJAX event to call | String | Yes | - |
| bindTo | if filled will bind this call to the given element and respective given event | String | No | - |
| serverCallMessage | The text for the server call | String | No | - |
| showCallMask | add a Mask to the current page while the server call is being executed | Boolean | No | True if serverCallMessage is set. False otherwise |
| showEstimatedTime | will add an estimated time info while the server call is being executed | Boolean | No | False |
| showProgressBar | add a progress bar while the server call is being executed | Boolean | No | False |
| bindTo | Allows binding of the dialog to an event of a given element, by it's ID. Notation: "componentID:event". | String | No | - |
Examples:
#1: AJAX request with a progress bar.
Will report errors to the screen in a JavaScript Dialog window, or redirect to the next stage.
<dif:document>
<dif:serverProcess ajaxEvent="ajaxEventName" bindTo="triggerelementID:click" showProgressBar="true">
<dif:success refreshComponentID="test" stageParameters="param=123" />
<dif:failure>The request failed with the following error:<br/>$result</dif:failure>
</dif:serverProcess>
</dif:document>
#2: AJAX request with an estimated time remaining.
Will report errors a specific div on the page, or refresh a partial page section (inner stage) on success. Since the success stage refresh is slow, we will show a message while it happens.
<dif:document>
<dif:component stageID="stageThatDisplaysSomeDynamicData" />
<div id="errorArea" style="display: none;"/>
<dif:ajaxRequest ajaxEvent="ajaxEventName" bindTo="triggerelementID:click" showEstimatedTime="true">
<dif:success refreshComponentID="stageThatDisplaysSomeDynamicData" stageParameters="afterUpdate=true"
loadingMessage="Updating data..." />
<dif:failure targetElementID="errorArea">
The request failed with the following error:<br/>$result
</dif:failure>
</dif:ajaxRequest>
</dif:document>
For each of the above, the stage AJAX handler must return an object of: ServerProcessResult. Of course the following is just as illustration. You would have to use some scheduling or threaded execution so your task would run between refreshed of the progress bar.
@OnAJAX("batch")
synchronized public ServerProcessResult batchAjaxMethod()
{
ServerProcessResult processResult = new ServerProcessResult();
processResult.setCurrentActionDescription("What it is doing now...");
processResult.setCurrentCount(32);
processResult.setTotalCount(80);
processResult.setStartDate(new Date());
processResult.setEstimatedFinishDate(someFutureDate);
processResult.setHasStarted(true);
processResult.setHasEnded(false);
return processResult;
}
See also: