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.
For more options, visit https://groups.google.com/d/optout.