Package com.smartgwt.client.docs
Interface JavaToJavaScriptConversion
public interface JavaToJavaScriptConversion
Converting GWT Java objects to JavaScript
Converting between native JavaScript objects and GWT Java objects is something the Smart GWT framework needs to do very frequently (see alsoJavaScriptToJavaConversion
).
It is less common for application code to do such conversions, but the need can arise. The
JSOHelper
class contains many utility methods for
sophisticated conversion from GWT Java objects to native JS objects. This article describes
the common rules used when such conversions are run.- Conversion is recursive; nested Java Maps, Collections and arrays will have their members converted as well
- Circular references (where an object is referred to by its own children, grandchildren, etc) are not tolerated. If you try to convert a Java object that contains circular references, your program will crash
- null is returned as null
- Strings are converted to JavaScript Strings
- Booleans are converted to JavaScript booleans
- Numeric data types - Integer, Long, Float, Double and all other Number subclasses - are converted to JavaScript
Number
s. Note that it is not possible to accurately represent values with an absolute value greater than 9,007,199,254,740,992 in a JavaScriptNumber
(some people find it easier to remember "15 decimal digits", from the rounded-down value 999,999,999,999,999). This is not a problem for most Java numeric types, but JavaLong
s can accurately represent values larger than this; converting such a large value to a JavaScriptNumber
introduces a loss of precision in the least significant digits. For example, the Java valueLong.MAX_VALUE
is 9223372036854775807. This value will be represented as 9223372036854776000 when converted to a JavaScriptNumber
ValueEnum
s are converted to the string representation obtained by calling theirgetValue()
methodjava.util.Date
s (and subclasses) are converted as JavaScriptDate
sRelativeDate
s are converted to the string representation obtained by calling theirgetValue()
method- Java arrays are converted to JavaScript arrays, with members recursively converted to the equivalent JavaScript type using the rules described in this article
- Java Collections (Lists and Sets) and Iterators are converted to JavaScript arrays, with members recursively converted to the equivalent JavaScript object using the rules described in this article
- Java Maps are converted to JavaScript Objects with each key mapped to a property on the object. Property values are recursively converted to the equivalent JavaScript object using the rules described in this article
Record
and its subclasses,
and instances of Canvas
and FormItem
are stored on the underlying data object unconverted. Developers can retrieve such values via
DataClass.getAttributeAsObject(String)
.