|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.smartgwt.client.rpc.RPCManager
public class RPCManager
RPCManager is a static singleton class that manages transparent client/server RPC (remote procedure call). This class provides a generic, low-level client/server communication integration point.
Smart GWT's powerful databinding subsystem (see DataSource,
DataBoundComponents) automatically make use of this class to
issue
RPCs as necessary, based on the
DataSource protocol. To integrate DataBoundComponents
with your server, start here.
For arbitrary client/server interactions outside of the DataSource subsystem, the
Smart GWT server also provides the Direct Method Invocation
feature.
The RPCManager class can also be used directly to send data to a URL of your choosing and optionally be called back with server-returned data when the server replies.
The Smart GWT server code has APIs for processing RPC requests
providing features such as automatic Java <--> JavaScript object translation
and handling of queued requests.
The IDACall servlet makes use of these features to handle
standard
DataSource requests and DMI calls. Developers can also override the
actionURL of specific requests and use these APIs directly in a
JSP, Servlet or Filter.
Note: the client-side RPCManager class can also be used without the Smart GWT server.
For an overview of client/server interactions without the Smart GWT server, see
this overview.
Simple arbitrary Remote Procedure Call example (client code):
RPCRequest request = new RPCRequest();
// Note data could be a String, Map or Record
request.setData("Some data to send to the client");
request.setActionURL("/rpcHandler.jsp");
RPCManager.sendRequest(request,
new RPCCallback () {
public void execute(RPCResponse response, Object rawData, RPCRequest request) {
SC.say("Response from the server:" + rawData);
}
}
);
Simple arbitrary Remote Procedure Call example (server code: /rpcHandler.jsp):
RPCManager rpc = new RPCManager(request, response, out);
Object data = rpc.getData();
System.out.println("client sent: " + data.toString());
rpc.send("here's a response");
Queuing
Because of browser limitations on the total number of simultaneous HTTP connections to a given
server, batching multiple RPC requests into a single HTTP request is highly advisable whenever
possible. The RPCManager provides a queuing mechanism that allows this.
Queuing example (client code):
boolean wasQueuing = RPCManager.startQueue();
RPCCallback callback = new RPCCallback() {
public void execute(RPCResponse response, Object rawData, RPCRequest request) {
Window.alert("response from server:" + rawData);
}
};
RPCRequest request1 = new RPCRequest();
request1.setActionURL("/rpcHandler.jsp");
request1.setData("A String of Data");
RPCManager.sendRequest(request1, callback);
RPCRequest request2 = new RPCRequest();
request2.setActionURL("/rpcHandler.jsp");
request2.setData("Another String of Data");
RPCManager.sendRequest(request2, callback);
if (!wasQueuing) RPCManager.sendQueue();
Queuing example (server code: /rpcHandler.jsp):
RPCManager rpc = new RPCManager(request, response, out);
for(Iterator i = rpc.getRequests().iterator(); i.hasNext();) {
RPCRequest rpcRequest = (RPCRequest)i.next();
Object data = rpcRequest.getData();
System.out.println("client sent:" + data.toString());
//send back the data sent to us by the client
rpc.send(rpcRequest, new RPCResponse(data));
}
Error Handling
Please see this separate article on error handling.
| Field Summary | |
|---|---|
static String |
ALL_GLOBALS
ALL_GLOBALS constant used by the loadScreen(String, LoadScreenCallback, String[]) API. |
| Constructor Summary | |
|---|---|
RPCManager()
|
|
| Method Summary | |
|---|---|
static void |
cancelQueue()
Cancel a queue of requests (also called a transaction). |
static void |
cancelQueue(String transactionNum)
Cancel a queue of requests (also called a transaction). |
static void |
clearTransaction(String transactionNum)
Erase all client-side record of a transaction, such that any response from the server will be ignored. |
static void |
exportContent(Canvas canvas)
Converts printable HTML generated from live UI components
into a .pdf and downloads it ("Save As.." dialog). |
static void |
exportContent(Canvas canvas,
DSRequest requestProperties)
Converts printable HTML generated from live UI components
into a .pdf and downloads it ("Save As.." dialog). |
static String |
getCurrentTransactionId()
Returns the id of the current transaction (a queue of requests). |
static void |
loadScreen(String screenName,
LoadScreenCallback callback)
Loads a screen saved in Component XML format, using the ScreenLoaderServlet. |
static void |
loadScreen(String screenName,
LoadScreenCallback callback,
String[] globals)
Loads a screen saved in Component XML format, using the ScreenLoaderServlet. |
static void |
loadScreen(String screenName,
LoadScreenCallback callback,
String[] globals,
RPCRequest requestProperties)
Loads a screen saved in Component XML format, using the ScreenLoaderServlet. |
static Boolean |
requestsArePending()
Returns whether there are any pending RPC requests. |
static void |
resendTransaction()
Resend a suspended transaction to the server. |
static void |
resendTransaction(String transactionNum)
Resend a suspended transaction to the server. |
static void |
send(JavaScriptObject data,
RPCCallback callback,
Map requestParams)
This method is a convenience wrapper on RPCManager.sendRequest() - it calls through to sendRequest(). |
static void |
send(JavaScriptObject data,
RPCCallback callback,
RPCRequest requestParams)
This method is a convenience wrapper on RPCManager.sendRequest() - it calls through to sendRequest(). |
static void |
send(String data,
RPCCallback callback,
Map requestParams)
This method is a convenience wrapper on RPCManager.sendRequest() - it calls through to sendRequest(). |
static void |
send(String data,
RPCCallback callback,
RPCRequest requestParams)
This method is a convenience wrapper on RPCManager.sendRequest() - it calls through to sendRequest(). |
static void |
sendProxied(RPCRequest request)
Send an HTTP request to a remote host, potentially through the HttpProxy servlet installed on the Smart GWT Server. |
static void |
sendProxied(RPCRequest request,
RPCCallback callback)
Send an HTTP request to a remote host, potentially through the HttpProxy servlet installed on the Smart GWT Server. |
static void |
sendQueue()
Send all currently queued requests to the server. |
static void |
sendQueue(RPCQueueCallback callback)
Send all currently queued requests to the server. |
static void |
sendRequest(RPCRequest rpcRequestProperties)
Send the passed RPCRequest to the server. |
static void |
sendRequest(RPCRequest rpcRequestProperties,
RPCCallback callback)
Send the passed RPCRequest to the server. |
static void |
setActionURL(String actionURL)
The actionURL specifies the URL to which the RPC request will be sent. |
static void |
setAllowCrossDomainCalls(Boolean allowCrossDomainCalls)
By default SmartGWT will show a warning message on attempted requests to another domain as this is usually not supported at the browser level by default due to security considerations. |
static void |
setAllowIE9Leak(boolean allowLeak)
In Internet Explorer 9, when a string of JavaScript is evaluated via the native eval() function, objects created
within that evaluation are not released from browser memory until the page is
reloaded. |
static void |
setCredentialsURL(String credentialsURL)
Specifies URL where credentials should be submitted to attempt relogin when session timeout is encountered during a background RPC. |
static void |
setDefaultPrompt(String defaultPrompt)
If showPrompt is enabled for a given transaction, this is the defaultPrompt to be shown to the user in a modal dialog while the transaction occurs. |
static void |
setDefaultTimeout(double defaultTimeout)
In milliseconds, how long the RPCManager waits for an RPC request to complete before returning an error. |
static void |
setFetchDataPrompt(String fetchDataPrompt)
Default prompt displayed to the user while an operation is running to fetch data from the server. |
static void |
setHandleErrorCallback(HandleErrorCallback callback)
By default handleError() always logs a warning. |
static void |
setHandleTransportErrorCallback(HandleTransportErrorCallback callback)
Method to handle server error responses to submitted transactions. |
static void |
setLoginRequiredCallback(LoginRequiredCallback callback)
The rpcRequest parameter can be used to determine whether the suspended transaction can simply be dropped (eg, it's periodic polling request). |
static void |
setPromptCursor(String promptCursor)
Controls the default cursor shown when RPCManager.promptStyle is set to "cursor". |
static void |
setPromptStyle(PromptStyle promptStyle)
Controls the default prompt style. |
static void |
setQueueSentCallback(QueueSentCallback callback)
Register a callback that is called by the RPCManager every time it sends a queue of requests to the server (note that if you not using queuing, the system simply sends queues containing just one request, so this API is valid regardless). |
static void |
setRemoveDataPrompt(String removeDataPrompt)
Default prompt displayed to user while an opration is running to remove data from the server. |
static void |
setSaveDataPrompt(String saveDataPrompt)
Default prompt displayed to the user while an opreration is running to save data to the server. |
static void |
setShowPrompt(boolean showPrompt)
If set to true, the RPCManager will block the UI with a modal dialog containing the text from RPCManager.defaultPrompt (or the per-RPCRequest override) until the RPC to the server completes. |
static void |
setTimeoutErrorMessage(String timeoutErrorMessage)
Default message displayed to user when an opration fails to return from the server within the timeout period specified by RPCManager.defaultTimeout. |
static void |
setUseCursorTracking(boolean useCursorTracking)
If true, an image is shown to the right of the cursor when RPCRequest.promptStyle is set to "cursor", otherwise the cursor itself is modified via css to the value of RPCRequest.promptCursor. |
static void |
setUseHttpProxy(Boolean useProxy)
Whether to ever attempt to use the "HttpProxy" servlet to enable web service requests to servers other than the origin server. |
static boolean |
startQueue()
Start queuing requests. |
static void |
suspendTransaction()
Suspends the current transaction, such that all processing of the transaction is halted, any remaining callback in the
transaction won't fire, and the transaction can never timeout. |
static void |
suspendTransaction(String transactionID)
Suspends the current transaction, such that all processing of the transaction is halted, any remaining callback in
the transaction won't fire, and the transaction can never timeout. |
static Boolean |
xmlHttpRequestAvailable()
Returns true if the XMLHttpRequest object is available, false otherwise. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final String ALL_GLOBALS
loadScreen(String, LoadScreenCallback, String[]) API.
| Constructor Detail |
|---|
public RPCManager()
| Method Detail |
|---|
public static void cancelQueue()
If a transactionId is passed, that transaction will be
cancelled, otherwise, the current (not yet sent) transaction is cancelled. You can retrieve the id of the current
transaction, if there is one, by calling getCurrentTransactionId() before the transaction has been sent.
Note that cancelQueue() calls clearTransaction() and attempts to abort the request. However,
note also that whilst cancelling a transaction that has already been sent will not necessarily stop the HTTP request
that has been issued - this is only possible on some browsers and with some transports - it will reliably cause Smart
GWT to ignore any response returned by the server and not fire any callbacks that have been passed in.
public static void cancelQueue(String transactionNum)
If a transactionId is passed, that transaction will be
cancelled, otherwise, the current (not yet sent) transaction is cancelled. You can retrieve the id of the current
transaction, if there is one, by calling getCurrentTransactionId() before the transaction has been sent.
Note that cancelQueue() calls clearTransaction() and attempts to abort the request. However,
note also that whilst cancelling a transaction that has already been sent will not necessarily stop the HTTP request
that has been issued - this is only possible on some browsers and with some transports - it will reliably cause Smart
GWT to ignore any response returned by the server and not fire any callbacks that have been passed in.
transactionNum - transactionId of the queue.public static void clearTransaction(String transactionNum)
A transaction
means a batch of one or more RPCRequests that have already been sent to the server via RPCManager.sendQueue.
You can retrieve the id of the current
transaction, if there is one, by getCurrentTransactionId() before the transaction is sent.
transactionNum - id of the transaction to be clearedpublic static void exportContent(Canvas canvas)
printable HTML generated from live UI components
into a .pdf and downloads it ("Save As.." dialog).
For DrawPane and subclasses (e.g. FacetChart) to export properly, the canvas
parameter must be the widget itself, not the HTML obtained with getPrintHTML().
You can use a custom skin when exporting your HTML content. To use a custom skin, add a line to server.properties:
skin.{skinName}.location: custom/skin
Where {skinName} is the name of your custom skin, and the value is the path to your
skin resources from the application webroot.
Requires the Smart GWT server framework, but does not require use of server-based databinding - no .ds.xml files need to exist.
See server-side docs for com.isomorphic.contentexport.PdfExport for more details on server-side processing and code samples for redirecting PDF output to a file or in-memory buffer, as well as instructions for adding additional stylesheets.
canvas - Canvas that has exportable widgets, or HTML fragment derived from getPrintHTML()
public static void exportContent(Canvas canvas,
DSRequest requestProperties)
printable HTML generated from live UI components
into a .pdf and downloads it ("Save As.." dialog).
For DrawPane and subclasses (e.g. FacetChart) to export properly, the canvas
parameter must be the widget itself, not the HTML obtained with getPrintHTML().
You can use a custom skin when exporting your HTML content. To use a custom skin, add a line to server.properties:
skin.{skinName}.location: custom/skin
Where {skinName} is the name of your custom skin, and the value is the path to your
skin resources from the application webroot.
Requires the Smart GWT server framework, but does not require use of server-based databinding - no .ds.xml files need to exist.
See server-side docs for com.isomorphic.contentexport.PdfExport for more details on server-side processing and code samples for redirecting PDF output to a file or in-memory buffer, as well as instructions for adding additional stylesheets.
canvas - Canvas that has exportable widgets, or HTML fragment derived from getPrintHTML()requestProperties - Request properties for the export to pdf objectpublic static Boolean requestsArePending()
public static void resendTransaction()
RPCManager.suspendTransaction for context. Note that the transaction must have been previously suspended, and in
particular suspended validly according to the rules described in the docs for RPCManager.suspendTransaction, or undefined results will occur.
You can resend all suspended transactions by calling RPCManager.resendTransaction with no arguments.
public static void resendTransaction(String transactionNum)
RPCManager.suspendTransaction for context. Note that the transaction must have been previously suspended, and in
particular suspended validly according to the rules described in the docs for RPCManager.suspendTransaction, or undefined results will occur.
You can resend all suspended transactions by calling RPCManager.resendTransaction with no arguments.
transactionNum - id of the transaction to be re-sent, or null to resend all suspended transactionspublic static Boolean xmlHttpRequestAvailable()
PlatformDependencies for more information on when XMLHttpRequest parser may not available and
what features are impacted as a result.
public static void setActionURL(String actionURL)
actionURL - the action URL.public static void setCredentialsURL(String credentialsURL)
credentialsURL - default value http://localhost:8080/isomorphic/login/loginSuccessMarker.htmlpublic static void setDefaultTimeout(double defaultTimeout)
In milliseconds, how long the RPCManager waits for an RPC request to complete before returning an error. If set to zero, the RPCManager will not enforce a timeout, but note that most browsers enforce their own timeouts on HTTP requests.
For the "xmlHttpRequest" transport, this timeout can only happen if the server actually fails to respond within the specified number of milliseconds. For the "hiddenFrames" transport, this timeout will occur for non-200 (HTTP_OK) responses.
defaultTimeout - the default value is 240000 [4 minutes]public static void setDefaultPrompt(String defaultPrompt)
defaultPrompt - the default value is 'Contacting Server...'public static void setFetchDataPrompt(String fetchDataPrompt)
fetchDataPrompt - defaults to "Finding Records that match your criteria..."public static void setRemoveDataPrompt(String removeDataPrompt)
removeDataPrompt - default value "Deleting Record(s)..."public static void setSaveDataPrompt(String saveDataPrompt)
saveDataPrompt - default value "Saving form..."public static void setPromptCursor(String promptCursor)
promptCursor - default is browser dependantpublic static void setPromptStyle(PromptStyle promptStyle)
promptStyle - default is PromptStyle.DIALOGpublic static void setShowPrompt(boolean showPrompt)
showPrompt - default is falsepublic static void setTimeoutErrorMessage(String timeoutErrorMessage)
timeoutErrorMessage - default value is "Operation timed out"public static void setUseCursorTracking(boolean useCursorTracking)
useCursorTracking - default value is platform-dependantpublic static void setUseHttpProxy(Boolean useProxy)
useProxy - enable or disable attempting to use the "HttpProxy" servletpublic static void setAllowCrossDomainCalls(Boolean allowCrossDomainCalls)
Some browsers now do support cross domain requests through the use of Http Access Control headers
(See the http://www.w3.org/TR/cors/,W3C Cross-Origin Resource Sharing recommendation).
If your application intends to rely on this behavior to perform cross-domain requests,
you can set allowCrossDomainCalls to true to disable the standard SmartGWT
warning when such calls occur.
Note also that this is typically not an issue if you are using the SmartGWT server (part of Pro, Power and Enterprise editions of SmartClient), as this includes the HTTPProxy servlet.
- public static void setLoginRequiredCallback(LoginRequiredCallback callback)
callback - the LoginRequiredCallbackpublic static void setHandleErrorCallback(HandleErrorCallback callback)
ErrorHandling for an overview of SmartGWT error handling.
callback - the callbackpublic static void setHandleTransportErrorCallback(HandleTransportErrorCallback callback)
This provides the developer with an opportunity to handle a server error by (for example) suspending and resubmitting the transaction before any other handling occurs.
The default implementation takes no action - by default transport errors are handled via {#setHandleErrorCallback()}, or by the standard request callback
methods, depending on request.willHandleError.
See ErrorHandling for an overview of SmartGWT error handling.
callback - the handleTransportError callbackpublic static boolean startQueue()
public static void sendQueue()
NOTE: if you aren't the caller who first enables queuing (startQueue() returns true), you should in general avoid calling sendQueue(), because whoever was first to enable queuing may have more requests to add to the same queue.
public static void sendQueue(RPCQueueCallback callback)
NOTE: if you aren't the caller who first enables queuing (startQueue() returns true), you should in general avoid calling sendQueue(), because whoever was first to enable queuing may have more requests to add to the same queue.
public static void suspendTransaction()
callback in the
transaction won't fire, and the transaction can never timeout. suspendTransaction() is typically used
to handle total failures for an entire transaction, such as HTTP status 500, or session timeout resulting in com.smartgwt.client.rpc.RPCManager#loginRequired being
called. In both cases the intent is to put the transaction on hold so that a transient problem can be resolved, and then the transaction can be re-sent successfully.
By using suspendTransaction(), components that submitted requests never realize there was a transient failure, and so error handling logic does not have to be implemented
in every component.
Generally you can only validly suspend a transaction from either com.smartgwt.client.rpc.RPCManager#loginRequired or
com.smartgwt.client.rpc.RPCManager#handleError, and in the case of handleError(), only when the first response in the transaction has an error.
Suspending and re-sending a partially processed transaction means that some responses will be processed twice, with undefined results for requests issued
automatically by UI components.
A suspended transaction must ultimately be either cleared via clearTransaction(java.lang.String)
or re-sent via resendTransaction() or memory will be leaked.
public static void suspendTransaction(String transactionID)
callback in
the transaction won't fire, and the transaction can never timeout. suspendTransaction() is
typically used to handle total failures for an entire transaction, such as HTTP status 500, or session timeout resulting in com.smartgwt.client.rpc.RPCManager#loginRequired
being called. In both cases the intent is to put the transaction on hold so that a transient problem can be resolved, and then the transaction can be re-sent successfully.
By using suspendTransaction(), components that submitted requests never realize there was a transient failure, and so error handling logic does not have to be implemented
in every component.
Generally you can only validly suspend a transaction from either com.smartgwt.client.rpc.RPCManager#loginRequired or
com.smartgwt.client.rpc.RPCManager#handleError, and in the case of handleError(), only when the first response in the transaction has an error. Suspending and re-sending a partially processed transaction means that some responses will be processed twice, with undefined results for requests issued automatically by UI components.
A suspended transaction must ultimately be either cleared via clearTransaction(java.lang.String) or re-sent via resendTransaction() or memory will be leaked.
transactionID - transaction to delay. Defaults to the current transaction if there is onepublic static String getCurrentTransactionId()
This method must be called after startQueue() has been called and at least one request has been issued.
public static void setQueueSentCallback(QueueSentCallback callback)
Register a callback that is called by the RPCManager every time it sends a queue of requests to the server (note that if you not using queuing, the system simply sends queues containing just one request, so this API is valid regardless).
It is intended to be used by user code that needs to be notified when Smart GWT sends requests to the server. Note that the list ofRPCRequest's passed to this
callback is strictly read-only.
callback - the callbackpublic static void sendProxied(RPCRequest request)
This API allows contacting services which are hosted on servers other than the origin server if the HttpProxy servlet is enabled on the Smart GWT Server.
The HttpProxy will be used if the actionURL starts with "http" and uses a hostname other than "localhost"
or window.location.hostname, or if the port number differs, or if request.useHttpProxy is
explicitly set. Otherwise the request goes to the origin server (the server that returned the current page).
The
RPCRequest properties that will be respected when relaying requests via the HttpProxy
are: actionURL, httpMethod, params, contentType, httpHeaders, and data. In this case "data", if set, will be used as the request body for an HTTP POST.
Higher-level APIs like
DataSource or WebService call through this API, and so
automatically use the HttpProxy if dataURL or webService.location is set to a foreign server.
This API is only
suitable for direct use when loading unstructured data that will not be shown in a DataBoundComponent. For a WSDL-described web service, use XMLTools.loadWSDL instead. For other web services, use a DataSource with dataURL, and use DataSource.transformRequest and DataSource.transformResponse as necessary to form requests for
the service and transform responses for display.
request - rpcRequest to be routed through the HttpProxy
public static void sendProxied(RPCRequest request,
RPCCallback callback)
This API allows contacting services which are hosted on servers other than the origin server if the HttpProxy servlet is enabled on the Smart GWT Server.
The HttpProxy will be used if the actionURL starts with "http" and uses a hostname other than "localhost"
or window.location.hostname, or if the port number differs, or if request.useHttpProxy is
explicitly set. Otherwise the request goes to the origin server (the server that returned the current page).
The
RPCRequest properties that will be respected when relaying requests via the HttpProxy
are: actionURL, httpMethod, params, contentType, httpHeaders, and data. In this case "data", if set, will be used as the request body for an HTTP POST.
Higher-level APIs like
DataSource or WebService call through this API, and so
automatically use the HttpProxy if dataURL or webService.location is set to a foreign server.
This API is only
suitable for direct use when loading unstructured data that will not be shown in a DataBoundComponent. For a WSDL-described web service, use XMLTools.loadWSDL instead. For other web services, use a DataSource with dataURL, and use DataSource.transformRequest and DataSource.transformResponse as necessary to form requests for
the service and transform responses for display.
request - rpcRequest to be routed through the HttpProxycallback - callback to invoke on RPC completionpublic static void sendRequest(RPCRequest rpcRequestProperties)
rpcRequestProperties - RPCRequest to send to the server
public static void sendRequest(RPCRequest rpcRequestProperties,
RPCCallback callback)
rpcRequestProperties - RPCRequest to send to the servercallback - callback to invoke on RPC completion
public static void send(String data,
RPCCallback callback,
RPCRequest requestParams)
data - data to be passed to the servercallback - callback to invoke on RPC completionrequestParams - any additional properties you want to set - these will be applied to the RPCRequest object that will be auto-created for you.
public static void send(String data,
RPCCallback callback,
Map requestParams)
data - data to be passed to the servercallback - callback to invoke on RPC completionrequestParams - any additional properties you want to set - these will be applied to the RPCRequest object that will be auto-created for you.
public static void send(JavaScriptObject data,
RPCCallback callback,
RPCRequest requestParams)
data - data to be passed to the servercallback - callback to invoke on RPC completionrequestParams - any additional properties you want to set - these will be applied to the RPCRequest object that will be auto-created for you.
public static void send(JavaScriptObject data,
RPCCallback callback,
Map requestParams)
data - data to be passed to the servercallback - callback to invoke on RPC completionrequestParams - any additional properties you want to set - these will be applied to the RPCRequest object that will be auto-created for you.
public static void loadScreen(String screenName,
LoadScreenCallback callback)
Component XML format, using the ScreenLoaderServlet. For each screenName passed, the
ScreenLoaderServlet will look for a file named screenName.ui.xml in the directory given by the "project.ui"
setting, which defaults webroot/shared/ui and can be configured in server.properties.
By default, components
in the loaded screen that have global IDs will not actually be allowed
to take those global IDs - instead, only widgets that have one of the global IDs passed as the globals
parameter will actually receive their global IDs. To override this behavior, pass the special value ALL_GLOBALS for the globals parameter.
This API
assumes the ScreenLoaderServlet is installed at the default location - to use a different location, use the
requestProperties parameter to specify a different URL via actionURL. The requestProperties parameter can also be
used to pass additional params to a custom ScreenLoaderServlet - see the "Dynamic Component XML" section of the Component XML overview.
screenName - name of the screen to loadcallback - callback for notification of screen being loaded
public static void loadScreen(String screenName,
LoadScreenCallback callback,
String[] globals)
Component XML format, using the ScreenLoaderServlet. For each screenName passed, the
ScreenLoaderServlet will look for a file named screenName.ui.xml in the directory given by the "project.ui"
setting, which defaults webroot/shared/ui and can be configured in server.properties.
By default, components
in the loaded screen that have global IDs will not actually be allowed
to take those global IDs - instead, only widgets that have one of the global IDs passed as the globals
parameter will actually receive their global IDs. To override this behavior, pass the special value ALL_GLOBALS for the globals parameter.
This API
assumes the ScreenLoaderServlet is installed at the default location - to use a different location, use the
requestProperties parameter to specify a different URL via actionURL. The requestProperties parameter can also be
used to pass additional params to a custom ScreenLoaderServlet - see the "Dynamic Component XML" section of the Component XML overview.
screenName - name of the screen to loadcallback - callback for notification of screen being loadedglobals - widgets to allow to take their global IDs
public static void loadScreen(String screenName,
LoadScreenCallback callback,
String[] globals,
RPCRequest requestProperties)
Component XML format, using the ScreenLoaderServlet. For each screenName passed, the
ScreenLoaderServlet will look for a file named screenName.ui.xml in the directory given by the "project.ui"
setting, which defaults webroot/shared/ui and can be configured in server.properties.
By default, components
in the loaded screen that have global IDs will not actually be allowed
to take those global IDs - instead, only widgets that have one of the global IDs passed as the globals
parameter will actually receive their global IDs. To override this behavior, pass the special value ALL_GLOBALS for the globals parameter.
This API
assumes the ScreenLoaderServlet is installed at the default location - to use a different location, use the
requestProperties parameter to specify a different URL via actionURL. The requestProperties parameter can also be
used to pass additional params to a custom ScreenLoaderServlet - see the "Dynamic Component XML" section of the Component XML overview.
screenName - name of the screen to loadcallback - callback for notification of screen being loadedglobals - widgets to allow to take their global IDsrequestProperties - optional properties for the requestpublic static void setAllowIE9Leak(boolean allowLeak)
eval() function, objects created
within that evaluation are not released from browser memory until the page is
reloaded.
SmartGWT uses the eval() function to evaluate JSON formatted
responses to RPCRequests by default, making long running applications potentially
susceptible to memory leaks over time.
Setting this property to false enables a workaround suggested on the
Microsoft Knowledge Base to
avoid such memory leaks by evaluating script in a hidden iframe and periodically
refresh that frame. However developers should be aware of the following
limitation with this setting: attempting to access certain object types including
Date or function objects generated from such an
evaluation can subsequently lead to a JavaScript error with the message
"Can't execute code from a freed script".
This workaround therefore may not be suitable for all transactions or dataSources within a given application.
This property may also be specified for specific +link{RPCRequest.allowIE9Leak,RPCRequests}.
Note: This issue is discussed further in the online SmartGWT FAQ.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||