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: