[+stalcup, +cromwellian] If you have JsExport on a class in the first compilation, it works fine right? I guess, it doesn't work only if you add JsExport after the first compilation?
Last week we were suspecting exporting might not be working properly w/ SDM. We need to write some incremental compilation test to make sure this works properly before 2.8. On Wed, Apr 1, 2015 at 5:27 AM, Julien Dramaix <[email protected]> wrote: > Thanks Goktug ! > > That works better with GWT 2.8 indeed. > > However, it seems there is a bug with @JsExport and super dev mode in the > last snapshot. When I use sdm, the prototype of my JsType is correctly > defined (fields and function are defined with the right name) but the > constructor is not exported and I cannot instantiated my Java object from > Javascript. > > AgeSlider.java: > > @JsNamespace("jdramaix") > @JsType > public class AgeSlider { > > public int age; > > @JsExport > public AgeSlider() { > } > > // other public methods are exported > } > > With sdm, in javascript, I'm not able to do: var slider = new > jdramaix.AgeSlider(); > > By looking a bit in the javascript code generated by sdm, the part > exporting the constructor under AgeSlider is not present: > _ = provide('jdramaix'); > _.AgeSlider = AgeSlider; > > That works fine with a normal compilation. > > Julien > > > On Wed, Apr 1, 2015 at 2:07 AM 'Goktug Gokdogan' via GWT Contributors < > [email protected]> wrote: > >> On Tue, Mar 31, 2015 at 2:30 PM, Julien Dramaix <[email protected] >> > wrote: >> >>> Dear GWT lovers, >>> >>> I've finally started to play with JsInterop in GWT 2.7 and mainly I'm >>> trying to use JsInterop in order to write polymer components. >>> >>> So far, I have two questions: >>> >>> 1. I'm using super dev mode and so I'm obliged to use >>> the CrossSiteIframeLinker. As the javascript code generated by GWT is >>> loaded in an iframe, the exported types are not accessible from the main >>> window (only from the iframe). The workaround I found to expose java type >>> from the main window is to prefix my namespace by *$wnd* >>> >>> @JsNamespace("$wnd.jdramaix") >>> public class AgeSliderImpl >>> >>> Isn't it a better way to do that ? >>> >>> >> Yes, in 2.7 you need to use $wnd to expose your code to main window. In >> GWT 2.8 snapshot, this is the default behavior, you don't need $wnd. >> >> >>> 2. I want to expose some java field of my class to javascript field. I'm >>> trying to use @JsProperty for this purpose but it seems not to work: >>> >>> @JsNamespace("$wnd.jdramaix") >>> public class AgeSliderImpl implements AgeSlider { >>> public int age; >>> >>> @Override >>> public int getAge() { >>> return age; >>> }} >>> >>> @JsType >>> public interface AgeSlider { >>> @JsProperty >>> int getAge(); >>> >>> } >>> >>> If I try to access the field in the javascript console,it is undefined: >>> > var slider = new jdramaix.AgeSliderImpl() >>> > slider.age >>> < undefined >>> >>> But the method getAge exists: >>> > slider.getAge >>> < function getAge_0_g$(){ >>> < return this.age_3_g$; >>> < } >>> Same problem if I rename the method to age(). slider.age is defined by >>> point to a function. >>> >>> Does @JsProperty work (at least when we export Java to Javascript) in >>> GWT 2.7. ? If so how to use it ? >>> >>> >> @JsProperty methods defined in @JsType that is implemented by concrete >> classes does not work with GWT 2.7 (basically the scenario in your code >> snippet), it doesn't generate the code with a javascript property >> setter/getters. >> >> In GWT 2.8 snapshot, javascript property setter/getter are still not >> implemented (yet) but instead you can use @JsType with concrete class and a >> public field, and you can skip the JsType interface completely. >> >> i.e. >> >> @JsType >> public class AgeSlider { >> public int age;} >> >> if you want to export the constructor, don't forget to add @JsExport as >> well. >> >> Thanks >>> >>> Julien >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "GWT Contributors" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected] >>> . >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/google-web-toolkit-contributors/CABb_3%3D6WZanScYy1ZqHBR23yssh9uvDLWe%3DquGaiixcpOusBog%40mail.gmail.com >>> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CABb_3%3D6WZanScYy1ZqHBR23yssh9uvDLWe%3DquGaiixcpOusBog%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "GWT Contributors" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA2CSorYH4oHFzGsVrRD1cfnDM1n_jEOJ4upOYyeukm4eQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA2CSorYH4oHFzGsVrRD1cfnDM1n_jEOJ4upOYyeukm4eQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to the Google Groups > "GWT Contributors" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/google-web-toolkit-contributors/CABb_3%3D6B1p%2BuAwuPjNW78dQCXJ0xuTQC2DJte1%2BfE2z58fm-vQ%40mail.gmail.com > <https://groups.google.com/d/msgid/google-web-toolkit-contributors/CABb_3%3D6B1p%2BuAwuPjNW78dQCXJ0xuTQC2DJte1%2BfE2z58fm-vQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/CAN%3DyUA2ity35giPe3UMq-axcWU3fj6BbKk7JFX74R0uRs8LCVw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
