Hi, 1. With jsinterop you won't need any JSNI normally. 2. If you have older JSNI code that calls your new code (can't really happen) you can a) use new $wnd.test.JsOpClass(); with -generateJsInteropExports as Thomas suggested b) use the old syntax found here http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html and that would be something like @com.test.workertest.shared.JsOpClass::new()() Note the ()() double parenthesis.
Do you want JsOpClass to be visible from both js and java? On Tue, Apr 11, 2017 at 5:29 PM, Philipp Gloor <[email protected]> wrote: > Can I access Classes and Methods decorated with JsType/JsMethod from > anywhere within GWT granted I'm inside a JSNI block? Or is it restricted to > packages? > > I added the -generateJsInteropExports to the run configuration arguments > but when I try to create a new object JsOpClass() it tells me $wnd.pdf is > undefined. > > On 11 April 2017 at 11:32, Thomas Broyer <[email protected]> wrote: > >> >> >> On Tuesday, April 11, 2017 at 10:43:06 AM UTC+2, Philipp wrote: >>> >>> If I have a java class and I mark it with @JsType I create a contract >>> between Java and Javascript that I can use this class with it's given Java >>> name in Javascript - is this correct? >>> >>> package com.test.workertest.shared; >>> >>> >>> import com.google.gwt.core.shared.GWT; >>> >>> >>> import jsinterop.annotations.*; >>> >>> >>> @JsType(namespace = "test", name = "JsOpClass") >>> public class JsOpClass >>> { >>> >>> >>> @JsMethod >>> public void printStuff() >>> { >>> GWT.log("asdfasdf"); >>> } >>> } >>> >>> >>> I would like to be able to create now a JsOpClass object in javascript >>> and call printStuff() on this object but I actually don't understand where >>> this is meant to be working. If I create for example a web worker which >>> would create this class it reports that >>> >>> com.google.gwt.event.shared.UmbrellaException: Exception caught: ( >>> ReferenceError) : testis not defined >>> >>> which makes sense because my worker.js knows nothing about GWT (would >>> this be possible?) >>> >>> And even if I try it in the GWT HTML file it doesn't seem to know about >>> this class and I get a test is not defined error. >>> >>> How do I actually call exposed classes/methods and from where is it >>> possible? >>> >> >> First, you have to pass -generateJsInteropExports to GWT (compiler, >> codeserver, devmode), to actually export the JsType to JavaScript. >> Then, from the context the GWT app (*.nocache.js) was loaded in, you >> should be able to do '(new test.JsOpClass()).printStuff()', *after* your >> GWT app has been loaded/started (once onModuleLoad has been called) >> >> >>> Is it only a JSNI substitute >>> >> >> Yes. >> >> >>> (but even then I was not able to call it from a JSNI method). >>> >> >> var o = new $wnd.test.JsOpClass(); >> o.printStuff(); >> >> …but maybe all you miss is the -generateJsInteropExports? >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "GWT Users" group. >> To unsubscribe from this topic, visit https://groups.google.com/d/to >> pic/google-web-toolkit/wpcpNJka5qo/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/google-web-toolkit. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "GWT Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/google-web-toolkit. > For more options, visit https://groups.google.com/d/optout. > -- Vassilis Virvilis -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/google-web-toolkit. For more options, visit https://groups.google.com/d/optout.
