Search Results

Search found 15 results on 1 pages for 'jsni'.

Page 1/1 | 1 

  • Passing an arbitrary JSONValue to a JSNI function

    - by Riley Lark
    I have a JSONValue in my Java that may be a JSONArray, a JSONObject, a JSONString, etc. I want to pass it to a JSNI function that can accept any of those types. If I naively write my JSNI as something like: public final native jsni(Object parameter) /*-{ doSomething(parameter); }-*/; public void useFunction(JSONValue value) { jsni(value); //Throws js exception at runtime :( } then I get a javascript exception, because GWT doesn't know how to convert the JSONValue to a JavaScriptObject (or native string / number value). My current workaround is public final native jsniForJSO(Object parameter) /*-{ doSomething(parameter); }-*/; public final native jsniForString(String parameter) /*-{ doSomething(parameter); }-*/; public final native jsniForNumber(double parameter) /*-{ doSomething(parameter); }-*/; public actuallyUseFunction(JSONValue value) { if (value.isObject()) { jsniForJSO(value.isObject().getJavaScriptObject()); } else if (value.isString()) { jsniForString(value.isString().stringValue()); } else { //etc } } This is a big burden for code maintainability, etc... especially if you have more than one parameter. Is there a way to generate these functions automatically, or get around this issue altogether? I've taken to wrapping everything in a JSONObject first, so I can definitely get a JavaScriptObject to pass to my jsni, but that's another clumsy mechanic.

    Read the article

  • Javascript instanceof & typeof in GWT (JSNI)

    - by rybz
    Hi, I've encountered an curious problem while trying to use some objects through JSNI in GWT. Let's say we have javscript file with the function defined: test.js: function test(arg){ var type = typeof(arg); if (arg instanceof Array) alert('Array'); if (arg instanceof Object) alert('Object'); if (arg instanceof String) alert('String'); } And the we want to call this function user JSNI: public static native void testx()/ *-{ $wnd.test( new Array(1, 2, 3) ); $wnd.test( [ 1, 2, 3 ] ); $wnd.test( {val:1} ); $wnd.test( "Some text" ); }-*/; The questions are: why instanceof instructions will always return false? why typeof will always return "object" ? how to pass these objects so that they were recognized properly?

    Read the article

  • Calling javascript function with arguments using JSNI

    - by jav_000
    I'm trying to integrate Mixpanel with GWT, but I have problems calling an event with a property and one value. My function to track an simple event (without values): public native void trackEvent(String eventName)/*-{ $wnd.mixpanel.track(eventName); }-*/; It works. But when I want to add some properties and values, it doesn't work properly: public native void trackComplexEvent(String eventName, String property, String value)/*-{ $wnd.mixpanel.track(eventName, {property:value}); }-*/; I have 2 problems with this: 1) Mixpanel says the property name is: "property"(yes, the name of the variable that I'm passing, not the value). 2) Mixpanel says the value is:undefined An example from mixpanel web is: mixpanel.track("Video Play", {"age": 13, "gender": "male"}); So, I guess the problem is I'm doing a wrong call or with wrong type of arguments.

    Read the article

  • GWT: Best practice for unit testing / mocking JSNI methods?

    - by Epaga
    I have a class which uses JSNI to retrieve JSON data stored in the host page: protected native JsArray<JsonModel> getModels() /*-{ return $wnd.jsonData; }-*/; This method is called, and the data is then translated and process in a different method. How should I unit test this class, since I'm not able to instantiate (or seemingly mock?) JsArray? What is the best way to unit test JSNI methods at all?

    Read the article

  • How to use Java varargs with the GWT Javascript Native Interface? (aka, "GWT has no printf()")

    - by markerikson
    I'm trying to quickly learn GWT as part of a new project. I found out that GWT doesn't implement Java's String.format() function, so there's no printf()-like functionality. I knew that some printf() implementations exist for Javascript, so I figured I could paste one of those in as a GWT Javascript Native Interface function. I ran into problems, and decided I'd better make sure that the varargs values were being passed in correctly. That's where things got ugly. First, some example code: // From Java, call the JSNI function: test("sourceString", "params1", "params2", "params3"); .... public static native void test(Object... params) /*-{ // PROBLEM: this kills GWT! // alert(params.length); // returns "function" alert(typeof(params)); // returns "[Ljava.lang.Object;@b97ff1" alert(params); }-*/; The GWT docs state that "calling a varargs JavaScript method from Java will result in the callee receiving the arguments in an array". I figured that meant I could at least check params.length, but accessing that throws a JavascriptException wrapped in an UmbrellaException, with no real information. When I do "typeof(params)", it returns "function". As if that weren't odd enough, if I check the string value of params, it returns what appears to be a string version of a Java reference. So, I guess I'm asking a few different questions here: 1) How do GWT/JSNI varargs actually work, and do I need to do something special to pass in values? 2) What is actually going on here? 3) Is there any easier way to get printf()-style formatting in a GWT application?

    Read the article

  • Adding a div element inside a panel?

    - by Bar Mako
    I'm working with GWT and I'm trying to add google-maps to my website. Since I want to use google-maps V3 I'm using JSNI. In order to display the map in my website I need to create a div element with id="map" and get it in the initialization function of the map. I did so, and it worked out fine but its location on the webpage is funny and I want it to be attached to a panel I'm creating in my code. So my question is how can I do it? Can I create a div somehow with GWT inside a panel ? I've tried to do create a new HTMLPanel like this: runsPanel.add(new HTMLPanel("<div id=\"map\"></div>")); Where runsPanel is a the panel I want to to be attached to. Yet, it fails to retrive the div when I use the following initialization function: private native JavaScriptObject initializeMap() /*-{ var latLng = new $wnd.google.maps.LatLng(31.974, 34.813); //around Rishon-LeTsiyon var mapOptions = { zoom : 14, center : latLng, mapTypeId : $wnd.google.maps.MapTypeId.ROADMAP }; var mapDiv = $doc.getElementById('map'); if (mapDiv == null) { alert("MapDiv is null!"); } var map = new $wnd.google.maps.Map(mapDiv, mapOptions); return map; }-*/; (It pops the alert - "MapDiv is null!") Any ideas? Thanks

    Read the article

  • GWT: What is the way to handle Click on GWT FlowPanel

    - by shaman.sir
    May be a dumb question, but GWT FlowPanel (raw div element) does not provides something to handle a mouseclick/mousemovement on it. Overriding onBrowserEvent do not works either. If setting onclick event using native JavaScript (need to specify positive height before, 'div' have a height of 0 if not specified), then catching these events is working properly. Is there a way to do it without using JSNI?

    Read the article

  • Embed VLC player in GWT

    - by chrisnfoneur
    Hello, I want to embed a VLC player in my webapp build with Google's GWT. First I had a look at this page: http://wiki.videolan.org/GWT, which offers a nice solution but I add to implements all javascript functions calls (play, stop, fullscreen) with JSNI. Then I found gwt-player (hosted by Google code) which does all the job for me but the annoying part is that the project is not widely used (few posts each month on the project's group, not so many talks about it in blogs/forums...) Do you know another option to easly embed & control a VLC player in a GWT app ? My main goal is to play any video/audio file in a webapp and offer the user a fast/forward feature (set rate in VLC), is there any other player I could use ? I already had a look at Quicktime, Windows Media player & Flowplayer, none of them offers as much features as VLC. Thanks in advance & have a nice new year's eve. Chris

    Read the article

  • GWT Background Study For Project help!

    - by Noor
    Hi, I am currently doing a project on GWT and in the background study, I need to perform a research on GWT. I have included many things which I will list below, Can u point something which I may be missing or what other interesting thing concerning GWT can i include more. The following what is currently included: GWT Java to JavaScript Compiler Deferred Binding JSNI (JavaScript Native Interface) JRE Emulation Library GWT-I18N (Internationalization and Configuration tools) GWT’s XMLParser Widgets and Panels Custom Composite Widget Event and Listeners Styling through CSS GWT History Management GWT Hibernate Integration (through GLead) MVP (Model-View-Presenter) for GWT through Model View Presenter Application Controller and Event Bus Server Calls using RPC and request builder Comet Serialization in GWT JSON (JavaScript Object Notation) Testing Web Application with GWT JUnit Benchmarking Selenium Further work in GWT such as Ext-GWT and smart GWT

    Read the article

  • Best way for launching html/jsp to communicate with GWT module

    - by h2g2java
    I asked this at the GWT forum but I'm impatient for the answer and I seem to get rather good responses here. A html or jsp file is used to launch the xxx.nocache.js, which then decides which browser "permutation" to use. <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"> <title>xxx</title> <script type="text/javascript" language="javascript" src="xxx.nocache.js"></script> </head> In my case, I am using a jsp. When the JSP is executed, it discovers some conditions. I wish to pass these conditions as values to the GWT module being launched. The "elegant" GWT way to pass these values would be to persist them as request/memcache attributes and then have the GWT module perform RPC to retrieve those values. For example, the JSP discovers that the current user is Whoopy. Shouldn't I simply have the JSP generate javascript to store user = "Whoopy" as a top or namedframe level javascript variable and use JSNI within the module to retrieve the value for user? I have not tried it yet, but I would like to know how anyone might have done it without having to use RPC.

    Read the article

  • Listen to Response on HTML Form embedded in GWT View?

    - by confile
    I have a HTML like the following: <div> <form> <input type="text" /> <button class="sendForm" value="Send form" /> </form> </div> <script> // post the form with Jquery post // register a callback that handles the response </script> I use this type of form a lot with a JavaScript/JQuery overlay that displays the form. That could be handled for example with plugins like FancyBox. I also want to use this form embedded into a GWT view. Lets assume that the for cannot be created on client side because it has some server based markup language inside to set up some model data. If I want to use this form in GWT I have to do the following. Tell GWT the form request url and use a RequestBuilder to query the html content of this form. Then I can insert it into a div generated by GWT. So far so good. Problem: When the user hits the send button the response is handled my the JQuery callback that is inside the script under the form. Is there a way to access this callback from within GWT? Is there a way to overwrite the JQuery send action? Since, the code is HTML and comes from the server I cannot place ui-binder UiFields inside to get access to these DOM elements. I need to get the response if the submitted form accessible to GWT. Is there a way how I can achieve this with JSNI?

    Read the article

  • Still confuse parse JSON in GWT

    - by graybow
    Please help meee. I create a project named 'tesdb3' in eclipse. I create the PHP side to access the database, and made the output as JSON.. I create the userdata.php in folder war. then I compile tesdb3 project. Folder tesdb3 and the userdata.php in war moved in local server(I use WAMP). I put the PHP in folder tesdb3. This is the result from my localhost/phpmyadmin/tesdb3/userdata.php [{"kode":"002","nama":"bambang gentolet"},{"kode":"012","nama":"Algiz"}] From that result I think the PHP side was working good.Then I create UserData.java as JSNI overlay like this: package com.tesdb3.client; import com.google.gwt.core.client.JavaScriptObject; class UserData extends JavaScriptObject{ protected UserData() {} public final native String getKode() /*-{ return this.kode; }-*/; public final native String getNama() /*-{ return this.nama; }-*/; public final String getFullData() { return getKode() + ":" + getNama(); } } Then Finally in the tesdb3.java: public class Tesdb3 implements EntryPoint { String url= "http://localhost/phpmyadmin/tesdb3/datauser.php"; private native JsArray<UserData> getuserdata(String json) /*-{ return eval(json); }-*/; public void LoadData() throws RequestException{ RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url)); builder.sendRequest(null, new RequestCallback(){ @Override public void onError(Request request, Throwable exception) { Window.alert("error " + exception); } public void onResponseReceived(Request request, Response response) { Window.alert("betul" + response.getText()); //data(getuserdata(response.getText())); } }); } public void data(JsArray<UserData> data){ for (int i = 0; i < data.length(); i++) { String lkode =data.get(i).getKode(); String lname =data.get(i).getNama(); Label l = new Label(lkode+" "+lname); tb.setWidget(i, 0, l); } RootPanel.get().add(new HTML("my data")); RootPanel.get().add(tb); } public void onModuleLoad() { try { LoadData(); } catch (RequestException e) { } } } The result just showing string "my data". And the Window.alert(response.getText()) showing nothing. Whyy?

    Read the article

  • JSON or YAML encoding in GWT/Java on both client and server

    - by KennethJ
    I'm looking for a super simple JSON or YAML library (not particularly bothered which one) written in Java, and can be used in both GWT on the client, and in its original Java form on the server. What I'm trying to do is this: I have my models, which are shared between the client and the server, and these are the primary source of data interchange. I want to design the web service in between to be as simple as possible, and decided to take the RESTful approach. My problem is that I know our application will grow substantially in the future, and writing all the getters, setters, serialization, factories, etc. by hand fills me with absolute dread. So in order to avoid it, I decided to implement annotations to keep track of attributes on the models. The reason I can't just serialize everything directly, using GWT's own one, or one which works through reflection, is because we need a certain amount of logic going on in the serialization process. I.e. whether references to other models get serialized during the serialization of the original model, or whether an ID is just passed, and general simple things like that. I've then written an annotation processor to preprocess my shared models and generate an implementing class with all the getters, setters, serialization, lazy-loading, etc. To make a long story short, I need some type of simple YAML or JSON library, which allows me to encode and decode manually, so I can generate this code through my annotation processor. I have had a look around the interwebs, but every single one I ran into supported some reflection which, while all fine and dandy, make it pretty much useless for GWT. And in the case of GWT's own JSON library, it uses JSNI for speed purposes, making it useless server side. One solution I did think about involved writing writing two sets of serialization methods on the models, one for the client and one for the server, but I'd rather not do that. Also, I'm pretty new to GWT, and even though I have done a lot of Java, it was back in the 1.2 days, so it's a bit rusty. So if you think I'm going about this problem completely the wrong way, I'm open to suggestions.

    Read the article

  • How to translate,use JSON in GWT?

    - by graybow
    I'm new in gwt. and need to know how to use JSON in gwt so i try this simple data loader but i'm still confuse. I create a project named 'tesdb3' in eclipse. I create the PHP side to access the database, and made the output as JSON.. I create the userdata.php in folder war. then I compile tesdb3 project. Folder tesdb3 and the userdata.php in war moved in local server(I use WAMP). I put the PHP in folder tesdb3. This is the result from my localhost/phpmyadmin/tesdb3/userdata.php [{"kode":"002","nama":"bambang gentolet"}{"kode":"012","nama":"Algiz"}] From that result I think the PHP side was working good.Then I create UserData.java as JSNI overlay like this: package com.tesdb3.client; import com.google.gwt.core.client.JavaScriptObject; class UserData extends JavaScriptObject{ protected UserData() {} public final native String getKode() /*-{ return this.kode; }-*/; public final native String getNama() /*-{ return this.nama; }-*/; public final String getFullData() { return getKode() + ":" + getNama(); } } Then Finally in the tesdb3.java: public class Tesdb3 implements EntryPoint { String url= "http://localhost/phpmyadmin/tesdb3/datauser.php"; private native JsArray<UserData> getuserdata(String Json) /*-{ return eval(json); }-*/; public void LoadData() throws RequestException{ RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url)); builder.sendRequest(null, new RequestCallback(){ @Override public void onError(Request request, Throwable exception) { Window.alert("error " + exception); } public void onResponseReceived(Request request, Response response) { getuserdata(response.getText()); //this is how i use the userdata json(is this already translated?) UserData UD = null; String LKode =UD.getKode(); String LName =UD.getNama(); Label L = new Label(LKode+""+LName); RootPanel.get().add(L); } }); } public void onModuleLoad() { try { LoadData(); } catch (RequestException e) { e.printStackTrace(); } } } The result is blank(i use development mode). and there was an eror like this:(I show it just some part) 10:46:29.984 [ERROR] [tesdb3] Uncaught exception escaped com.google.gwt.core.client.JavaScriptException: (ReferenceError): json is not defined fileName: http://localhost:1092 lineNumber: 2 stack: ("")@http://localhost:1092:2 My question is: How I use the translated Json in right way?? Is there any wrong use from my code? Is that necessary to move the compiled project to local server folder?(i do it following a tutorial from google). Sorry too many ask. but i'm really really confused.

    Read the article

1