Thanks Thomas. I tried your suggestion and it worked. (Sorry if I missed this in some previous discussion.)
Thanks for the help, Eric On Mar 9, 4:09 pm, Thomas Broyer <[email protected]> wrote: > On 9 mar, 23:13, Eric <[email protected]> wrote: > > > > > > > Host page has this: > > > Call JSNI JavaScript function from HTML where function implementation > > was written in Java. Click here: <a href='#' onClick='gwtJs2();'>here</ > > a> > > > In EntryPoint, I have this: > > public void onModuleLoad() { > > defineGwtJs2(); > > } > > /** > > * Define JS function in GWT that will be implemented by GWT Java > > */ > > public native void defineGwtJs2() /*-{ > > $wnd.gwtJs2 = > > [email protected]::callGwtJs2Impleme > > ntation(); > > }-*/; > > > public void callGwtJs2Implementation(){ > > Window.alert("Here was clicked"); > > } > > > When I start in hosted mode and click the link, I see the following in > > the FireBug console: > > uncaught exception: java.lang.ClassCastException > > > If I compile and move the html/js to tomcat, the alert pops up as > > expected. Is there a known issue around this? Or am I doing > > something that's not supported? > > This is a scoping issue in JS, in that the "this" context is lost when > you assign the function/method. This is just how JS works. The proper > way is to introduce a "closure": > > var that = this; > $wnd.gwtJs2 = function() > { > [email protected]::callGwtJs2Impleme > ntation()(); } > > (make sure ou call the method on the "that" variable, not on the > "this" special keyword)- Hide quoted text - > > - Show quoted text - -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
