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/e893d708-8c70-4dcd-b2d5-f1100a294f63n%40googlegroups.com.