With the following:
@JsType(namespace = JsPackage.GLOBAL, name = "Object", isNative = true)
public class XXXGWT {
public String codiceAmministrazione;
}
you should be able to write:
var xxx = new XXXGWT();
xxx.codiceAmministrazione = "foo";
and have it translate more or less to:
let xxx = new $wnd.Object()
xxx.codiceAmministrazione = "foo";
With the getter and setter, you have to annotate them with @JsProperty, but
the generated JS will be identical, so you've actually only made your code
more verbose for no compelling reasons (besides maybe pleasing static
analyzers like Sonar that will yell if you don't encapsulate fields).
On Tuesday, May 21, 2024 at 4:30:35 PM UTC+2 [email protected] wrote:
Just to be clear on my use case this is my java class:
@JsType(namespace = JsPackage.GLOBAL, name = "Object", isNative = true)
public class XXXGWT {
private String codiceAmministrazione;
@JsConstructor
public DocumentoPAC4DTOGWT() {}
public native String getCodiceAmministrazione();
public native void setCodiceAmministrazione(String codiceAmministrazione);
}
and this is the erorr i'm getting on the setter :
DesktopApp-0.js:13132 Tue May 21 16:24:02 GMT+200 2024
com.google.gwt.logging.client.LogConfiguration SEVERE: Exception caught:
(TypeError) : b.setCodiceAmministrazione is not a function
com.google.gwt.event.shared.UmbrellaException: Exception caught:
(TypeError) : b.setCodiceAmministrazione is not a function
Il giorno martedì 21 maggio 2024 alle 14:56:22 UTC+2 Marco Tenti
(IoProgrammo88) ha scritto:
Sorry Thomas about your last comment " I'd rather user fields than
getters/setters for such objects " can you point me out to some example
for this ?
Il giorno mercoledì 29 giugno 2022 alle 09:48:49 UTC+2 Thomas Broyer ha
scritto:
Using isNative=true, you're telling GWT that you're only "mapping" in Java
a *type* that exists in JS. The default naming rule is that the full name
of that type is the fully qualified name of the Java class, you can change
the simple name with 'name', and the *prefix* with namespace (which
defaults to the package name for top-level classes, or the enclosing type's
JS name for nested classes). So with namespace=GLOBAL but without the
name="Object", you're saying that you want to basically do a 'new
$wnd.MyPluginConfig()' in JS, and the browser rightfully complains that
there's no such MyPluginConfig. Adding name="Object" means you'll do a 'new
$wnd.Object()' in JS.
Fwiw, I'd rather user fields than getters/setters for such objects. YMMV.
On Wednesday, June 29, 2022 at 8:38:19 AM UTC+2 Nicolas Chamouard wrote:
Thank you !
It is a bit mysterious to me, but with *name = "Object"* the constructor
works :)
Le mercredi 29 juin 2022 à 00:47:32 UTC+2, [email protected] a écrit :
try adding name = "Object" so that it uses an empty javascript Object as
the wrapped item.
I found this via Googling:
@JsType(namespace = JsPackage.GLOBAL, isNative = true, name = "Object")
public class MyPluginConfig { @JsProperty public void setXXXX(String str); @
JsProperty public String getXXXX(); ... }
Ref: https://stackoverflow.com/a/36329387/12407701
On Tue, Jun 28, 2022 at 6:24 PM Nicolas Chamouard <[email protected]>
wrote:
Yes, it does not change anything :
@JsType(*isNative*=*true*, *namespace* = JsPackage.*GLOBAL*)
*public* *class* OptionOverrides {
@JsConstructor
*public* OptionOverrides() {}
@JsProperty
*public* *native* String getInitialView();
@JsProperty
*public* *native* *void* setInitialView(String initialView);
}
Still the same error : *$wnd.OptionOverrides is not a constructor*
Le mardi 28 juin 2022 à 23:27:08 UTC+2, [email protected] a écrit :
Have you tried giving the class a constructor?
On Tue, Jun 28, 2022 at 4:04 PM Nicolas Chamouard <[email protected]>
wrote:
Hello,
I am using JsInterop to integrate FullCalendar to my GWT application.
As described here https://fullcalendar.io/docs/initialize-globals, I am
supposed to create an object literal and pass it to the Calendar()
constructor.
I have managed to create this class :
@JsType(*namespace* = JsPackage.*GLOBAL*)
*public* *class* OptionOverrides {
@JsProperty
*public* *native* String getInitialView();
@JsProperty
*public* *native* *void* setInitialView(String initialView);
}
It works but the FullCalendar complains about all the Java Object stuff
that is translated to javascript : equals(), hashCode(), etc
I have tried to add* isNative=true* to my class, but in this case i cannot
instantiate it in Java (error : $wnd.OptionOverrides is not a constructor)
Is there an other way to do this, am I missing something here ?
Thanks
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/google-web-toolkit/a03c881a-48d4-4892-9fae-7719bc9a57b8n%40googlegroups.com
<https://groups.google.com/d/msgid/google-web-toolkit/a03c881a-48d4-4892-9fae-7719bc9a57b8n%40googlegroups.com?utm_medium=email&utm_source=footer>
.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/google-web-toolkit/4d8099ea-3a37-4026-b459-f228e35ca59bn%40googlegroups.com
<https://groups.google.com/d/msgid/google-web-toolkit/4d8099ea-3a37-4026-b459-f228e35ca59bn%40googlegroups.com?utm_medium=email&utm_source=footer>
.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/google-web-toolkit/0e8cbc25-2a54-4bd8-942d-c7b270ce0f94n%40googlegroups.com.