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 also JavaScriptToJavaConversion). 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 Numbers. Note that it is not possible to accurately represent values with an absolute value greater than 9,007,199,254,740,992 in a JavaScript Number (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 Java Longs can accurately represent values larger than this; converting such a large value to a JavaScript Number introduces a loss of precision in the least significant digits. For example, the Java value Long.MAX_VALUE is 9223372036854775807. This value will be represented as 9223372036854776000 when converted to a JavaScript Number
    • ValueEnums are converted to the string representation obtained by calling their getValue() method
    • java.util.Dates (and subclasses) are converted as JavaScript Dates
    • RelativeDates are converted to the string representation obtained by calling their getValue() 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
    Other Java Objects, including POJOs, instances of 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).