I'm not sure but... "return $wnd.key;" is the same as "return $wnd['key'];"
which is not what you want, you should use "return $wnd[key];".
On Sunday, November 2, 2014 8:28:12 AM UTC+1, Alex Luya wrote:
>
> I am trying to use JSNI to set/get variable to/from js object:window like
> this:
>
> private final native <T> T get(String key)/*-{
> return $wnd.key;
> }-*/;
>
> private final native void set(String key, Object value)/*-{
> $wnd.key = value;
> }-*/;
>
> and if I set a variable: var_1 to window: (the definition of IdNameImpl
> is listed in the end)
>
> IdName var_1=IdNameImpl.create("id_1","name_1");set("key_1",var_1);
>
> then
>
> get("key_1")
>
> I will get var_1 correctly
>
> and then set another variable var_2 to window
>
> IdName var_2=IdNameImpl.create("id_2","name_2"); set("key_2",var_2)
>
> then,try to get key_1 again
>
> get("key_1")
>
> unexpectedly,var_2 will be returned
>
> so,the problem is obvious:the get() method will always return the last set
> variable no matter what key is.Questions are:
>
> 1,Why?2,How to make it right?
>
> Blow is definition of IdNameImpl
>
> public class IdNameImpl extends JavascriptObject implements IdName{
> public static final IdName create(String Id,String Name)/*-{
> var o=new Object();
>
> o.Id=Id;
> o.Name=Name;
>
> return o;
> }-*/;
>
> protected IdNameImpl()
> {
> }
>
> @Override
> public final native String getName()/*-{
> return this.Name;
> }-*/;
>
>
> @Override
> public final native void setName(String Name)/*-{
> this.Name = Name;
> }-*/;
>
> @Override
> public final native String getId()/*-{
> return this.Id;
> }-*/;
>
>
> @Override
> public final native void setId(String Id)/*-{
> this.Id = Id;
> }-*/;}
>
>
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" 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 http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.