May be you missed the signature? [instance-ex...@package.classname::methodeName(signature)(parameters)
On Oct 6, 12:04 am, Boris Lenzinger <boris.lenzin...@gmail.com> wrote: > Thank you for your answer. > > This part (calling js from java) is working fine. But my problem is calling > generated javascript from hand written javascript... > The export trick (see MyUtilityClass) does not seem to expose javamethods to > hand written javascript. > > How can I call my java code from je javascript ? I have read the syntax in > the dev guide with @package.className::methodeName(parameters) but could not > make it work. I could neither make the export thing work... > > I miss something but I cannot see where... > > 2010/10/6 Y2i <yur...@gmail.com> > > > > > I think Boris is correct by using $wnd. I also call my javascript > > library functions from a native method through $wnd, as described > > here: > >http://googlewebtoolkit.blogspot.com/2008/07/getting-to-really-know-g... > > > Boris' example seems complicated. At the beginning I would simply > > create a javascript function that calls alert: > > > function sayHello(name) { > > alert("Hello from JavaScript, " + name); > > } > > > and a native method in my Entry Point class: > > > native void sayHelloInJava(String name) /*-{ > > $wnd.sayHello(name); > > }-*/; > > > (this is exactly as shown in the reference above) > > > I use exactly the same approach, except instead of using HTML file I > > place my JS library into a public folder and use <script src='lib.js'/ > > > in my module. > > This technique is described here: > > >http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjec... > > > Once this worked I would move further. > > > On Oct 5, 2:33 pm, Daniel Kurka <kurka.dan...@googlemail.com> wrote: > > > if you are in javascript its not $wnd its just window :) > > > > 2010/10/5 Boris Lenzinger <boris.lenzin...@gmail.com> > > > > > Sorry for the javascript : there is a mistake : variable name is not > > > > buttonnode but button at return step of the method... > > > > Anyway the problem still stands ;-) > > > > > Boris > > > > > 2010/10/5 Boris Lenzinger <boris.lenzin...@gmail.com> > > > > >> Hi, > > > > >> I'm currently trying to call a "java" method from a javascript that > > lives > > > >> outside of the generated javascript from GWT. > > > > >> What I want to do is the following : > > > >> make the gwt component communicates with a javascript component (in > > both > > > >> ways). > > > >> I have to say that I don't know at all javascript...... > > > > >> The problem I encounter is the following : > > > >> * call to javascript method (generated by GWT) from my handwritten > > > >> javascript does not work : firebug says : $wnd does not exist. > > > >> I thought this variable was always existing in javascript but this > > > >> assumption is may be false. > > > > >> I think it is quite basic (probably a problem of understanding in > > > >> javascript). I have read the following (this is where I found most of > > the > > > >> code for doing the stuff) : > > > > >>http://www.gwtapps.com/doc/html/com.google.gwt.doc.DeveloperGuide.Jav. > > .. > > > >> plus others (like > > >http://www.mail-archive.com/google-web-toolkit@googlegroups.com/msg38...) > > but I'm stuck there. > > > > >> Here the very basic code to test the feature : > > > > >> ============================ > > > >> The GWT Component > > > >> ============================ > > > >> package test.app.client; > > > > >> import com.google.gwt.core.client.EntryPoint; > > > >> import com.google.gwt.dom.client.DivElement; > > > >> import com.google.gwt.dom.client.Document; > > > >> import com.google.gwt.event.dom.client.ClickEvent; > > > >> import com.google.gwt.event.dom.client.ClickHandler; > > > >> import com.google.gwt.user.client.ui.Button; > > > >> import com.google.gwt.user.client.ui.DialogBox; > > > >> import com.google.gwt.user.client.ui.HTML; > > > >> import com.google.gwt.user.client.ui.RootPanel; > > > >> import com.google.gwt.user.client.ui.VerticalPanel; > > > >> import com.google.gwt.user.client.ui.Widget; > > > > >> /** > > > >> * Entry point classes define <code>onModuleLoad()</code>. > > > >> */ > > > >> public class GwtAndJavascript implements EntryPoint { > > > > >> JsButton jsButton; > > > > >> public void onModuleLoad() { > > > >> final Button gwtButton = new Button("Add item to JS !"); > > > > >> final VerticalPanel panel = new VerticalPanel(); > > > >> panel.add(gwtButton); > > > > >> RootPanel.get("sendButtonContainer").add(panel); > > > >> MyUtilityClass.exportStaticMethod(); > > > > >> final ClickHandler handler = new ClickHandler() { > > > > >> public void onClick(ClickEvent event) { > > > >> jsButton.callSayHello("User"); > > > >> } > > > >> }; > > > >> gwtButton.addClickHandler(handler); > > > > >> // Now I want to add javascript button that lives in a js > > script... > > > >> jsButton = new JsButton(); > > > >> panel.add(jsButton); > > > > >> } > > > > >> private class JsButton extends Widget { > > > > >> public JsButton() { > > > >> DivElement element = Document.get().createDivElement(); > > > >> makeMyGraphicalObject(element); > > > >> setElement(element); > > > >> } > > > > >> private native void makeMyGraphicalObject(DivElement element) /*-{ > > > >> $wnd.createButton(element); > > > >> }-*/; > > > > >> public native void callSayHello(String name) /*-{ > > > >> $wnd.javascriptSayHello(name); > > > >> }-*/; > > > > >> } > > > > >> } > > > > >> ======================= > > > >> The class that should help to trigger the java method from javascript > > > >> ======================= > > > >> package test.app.client; > > > > >> import com.google.gwt.user.client.Window; > > > > >> public class MyUtilityClass { > > > > >> public static void sayHello() { > > > >> Window.alert("Say Hello !"); > > > >> } > > > > >> public static native void exportStaticMethod() /*-{ > > > >> $wnd.sayHello = @test.app.client.MyUtilityClass::sayHello(); > > > >> }-*/; > > > > >> } > > > > >> ==================== > > > >> The HTML page > > > >> ==================== > > > > >> <html> > > > >> <head> > > > >> <meta http-equiv="content-type" content="text/html; > > charset=UTF-8"> > > > > >> <!-- > > --> > > > >> <!-- Consider inlining CSS to reduce the number of requested files > > --> > > > >> <!-- > > --> > > > >> <link type="text/css" rel="stylesheet" > > href="GwtAndJavascript.css"> > > > > >> <!-- --> > > > >> <!-- Any title is fine --> > > > >> <!-- --> > > > >> <title>Web Application Starter Project</title> > > > > >> <!-- --> > > > >> <!-- This script loads your compiled module. --> > > > >> <!-- If you add any GWT meta tags, they must --> > > > >> <!-- be added before this line. --> > > > >> <!-- --> > > > >> <script type="text/javascript" language="javascript" > > > >> src="gwtandjavascript/gwtandjavascript.nocache.js"></script> > > > >> <script type="text/javascript" language="javascript" > > > >> src="button.js"></script> > > > >> </head> > > > > >> <!-- --> > > > >> <!-- The body can have arbitrary html, or --> > > > >> <!-- you can leave the body empty if you want --> > > > >> <!-- to create a completely dynamic UI. --> > > > >> <!-- --> > > > >> <body> > > > > >> <!-- OPTIONAL: include this if you want history support --> > > > >> <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' > > > >> style="position:absolute;width:0;height:0;border:0"></iframe> > > > > >> <!-- RECOMMENDED if your web app will not function without > > JavaScript > > > >> enabled --> > > > >> <noscript> > > > >> <div style="width: 22em; position: absolute; left: 50%; > > margin-left: > > > >> -11em; color: red; background-color: white; border: 1px solid red; > > padding: > > > >> 4px; font-family: sans-serif"> > > > >> Your web browser must have JavaScript enabled > > > >> in order for this application to display correctly. > > > >> </div> > > > >> </noscript> > > > > >> <table align="center"> > > > >> <tr> > > > >> <td id="sendButtonContainer"></td> > > > >> </tr> > > > >> <tr> > > > >> <td colspan="2" style="color:red;" > > id="errorLabelContainer"></td> > > > >> </tr> > > > >> </table> > > > >> </body> > > > >> </html> > > > > >> ==================== > > > >> The javascript code > > > >> ==================== > > > > >> function createButton(divElement) { > > > >> var button= document.createElement('input'); > > > >> button.setAttribute('type','button'); > > > >> button.setAttribute('name','button'); > > > >> button.setAttribute('value','JS Button'); > > > >> divElement.appendChild(button); > > > >> button.onclick = function() { $wnd.sayHello; }; > > > > >> return button; > > > > >> } > > > > >> // This is called from java > > > >> function javascriptSayHello(name) { > > > >> alert("Hello " + name); > > > >> } > > > > >> ============ > > > > >> Any help would be highly appreciated :-) > > > > >> thanks in advance > > > > >> Boris > > > > > -- > > > > You received this message because you are subscribed to the Google > > Groups > > > > "Google Web Toolkit" group. > > > > To post to this group, send email to > > google-web-tool...@googlegroups.com. > > > > To unsubscribe from this group, send email to > > > > google-web-toolkit+unsubscr...@googlegroups.com<google-web-toolkit%2Bunsubs > > > > cr...@googlegroups.com><google-web-toolkit%2Bunsubs > > cr...@googlegroups.com> > > > > . > > > > For more options, visit this group at > > > >http://groups.google.com/group/google-web-toolkit?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Google Web Toolkit" group. > > To post to this group, send email to google-web-tool...@googlegroups.com. > > To unsubscribe from this group, send email to... > > read more » -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.