Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    flatlander
    @flatlanderer_gitlab
    maybe 10 years more? haha
    Colin Alworth
    @niloc132
    the stated goal of "gwt 3" is that the ecosystem works on either gwt2 or j2cl, and it is up to the user to decide which they want, which solves their problems
    if someone needs it to happen and is willing to work with me and my company to update (or do the work them selves), sure, why not?
    going back 10 years and seeing what js tooling is still leading the way is an education ;)
    flatlander
    @flatlanderer_gitlab
    yeah that makes sense, hopefully we call can build prosperous apps with GWT, and who knows, I think this is important that apps that sells will come like from what I know Google is just focused with Flutter and building apps that generates revenues (as well as other companies) thus it have this "money" in the ecosystem which makes it move really fast, last I heard there's flutter 2 for web and stable
    Tested it and it doesn't feel good
    Colin Alworth
    @niloc132
    i've heard nice things, aside from ios native performance of animations - dart didn't really impress me back in the day, and i think typescript has some wonderful and also terrible features, but i still find gwt to be more productive for the kinds of long-term projects i'm interested in enabling
    flatlander
    @flatlanderer_gitlab
    yeah, the web is sluggish I tried, and its a canvas, a really big canvas
    to be fair, btw, we use flutter for mobile ui, but for web, it doesn't work for us yet
    but seriously, it got me thinking, is canvas the future of web? I mean like its like a browser inside a browser, it would be like inception
    Colin Alworth
    @niloc132
    unless i'm very much mistaken, there is no way to provide good accessibility for canvas based impls, so i'm frankly terrified of such approaches
    screenreaders, user stylesheets, etc
    keyboard nav
    flatlander
    @flatlanderer_gitlab
    yeah
    you can basically build great UI with Tailwind CSS
    instead
    flatlander
    @flatlanderer_gitlab
    Colin Alworth
    @niloc132
    mm, that's not enough
    that just gets you a hook to know "hey it is uploading, draw a fake progress bar", not the actual one you want to count bytes and such
    which ok, that works
    flatlander
    @flatlanderer_gitlab
    you mentioned a hack right? when you have the idea please let me know
    Dr. Lofi Dewanto
    @lofidewanto_twitter

    @ainslec Better late than never ;-) I put every update stuffs (articles, presentations) at this Padlet: https://padlet.com/lofidewanto/gwtintro

    @All: If you have something, you could add into that Padlet by yourself and I'll check it before I approve...

    Dr. Lofi Dewanto
    @lofidewanto_twitter
    @ainslec If you need to build a realworld webapp with IndexedDB (just like JPA / Hibernate), this article would be useful with all the Design Patterns in Java: https://bit.ly/GwtIndexedDBDesignPatterns
    Michele Pollini
    @MichelePollini
    Hi! We have a old gwt application (v 2.8.2) and on chrome 89 version we have error 500 during some server calls. With version 88 is all good. Anyone have same issue? Thanks
    Thomas Broyer
    @tbroyer
    What's the actual error behind that 500?
    Michele Pollini
    @MichelePollini
    08-Mar-2021 12:37:07.989 SEVERE [http-nio-8090-exec-8] org.apache.catalina.core.ApplicationContext.log Exception while dispatching incoming RPC call
    java.lang.NumberFormatException: Expected type 'int' but received a non-numerical value: �a�Ħ����9?�I��G1�,�!��$t���
    �/s�Ħ����94��[2IM!œNԇS�5#��WT�J��V�o��>�5#��t�g҆�s����w���c�� ]���ѐ��˻��5i�~ �� .�Bӌ޾+��q��Z� jC�t9�����g��<CE��v�N��ov��!r���������ћދ�促�����}K�� Ѫ�v��-��׺�{6�{��̒v����M�Ƀ+��?)����K�4��fjx=�� ��R�50~ݪ��[���6�"g�{Y�ץ�*�fQܶ�0F�Y�u�K ��Hyn�=�ڶ�--���x��o�Н����5$B凧��4�m���}�7����;9K���
    ��U��K�[��uT"�m^��˙$�m{�p�E�W��~S$5cfD�zi�����{�����j��Uה��׆m�D�J����K�U��"��m����l릖<AڑL81BĸZu��y�>�[p:����o5�q�O�n����U\p��w��Dz9�Ï �ˤ��^G����5e��m瞎N�}�����#��K�qs��I�Qß�R��7��-zsmo���ۍ:�ڏA O K7
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.getNumberFormatException(ServerSerializationStreamReader.java:1027)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readInt(ServerSerializationStreamReader.java:551)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.prepareToRead(AbstractSerializationStreamReader.java:96)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.prepareToRead(ServerSerializationStreamReader.java:477)
    at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:240)
    ...
    We are currently investigate about it
    Michele Pollini
    @MichelePollini
    It occur only with https
    Thomas Broyer
    @tbroyer
    It looks like the request payload may be gzipped or something like that, and is not ungzipped before being handed to the servlet.
    Colin Alworth
    @niloc132
    i dont think its gzip (unless somehow the first few bytes were removed?), but for sure something funny happened to just the payload and probably not the request line, headers for it to get this far. if you have the rest of the headers (see if chrome is saying what it is sending differently), rest of the stack trace (see which filters could be causing problems here) that might help pin it down
    Colin Alworth
    @niloc132
    @flatlanderer_gitlab in short, once you have the Request object, use JSNI to access its xhr field, and then do the JS snippet you posted above to get the notification when it changes
    Chris Ainsley
    @ainslec
    Hello, trying my best to understand how JsInterop works with JavaScript methods that return a particular complex data structure
    For example, I want to be able to process the data from a call to this:
    var arrayOfKeyValueArrays = Object.entries(localStorage)
    This will return an array containing two element arrays, first element key, second element value
    I just want to essentially map this to something like a String[][]
    I don't know the correct way of mapping this using JsInterop
    Colin Alworth
    @niloc132
    @ainslec this is a very good question that gets to a lot of different things, including how JS kinda plays fast and loose with things that java would get mad about - i mean, String[][] is okay if your object only has string values, but for a complex structure of an object passed in, or something else like Number or Boolean, you obviously can't use that, you'd need Object[][]
    it is informative to read how elemental2-core doe sot: JsObject.entries returns a jsarray of a jsarray of a union type, and the union type is generic
    you can ask each entry "are you a string, or are you a T" - but of course, you the reader don't need to check this, since you can just use index 0 or 1 and already know what the type is
    in gwt2, JsArray<JsArray<String>> (or JsString) is technically more correct than String[][], esp if you end up casting the contents of the array (a String[] is instanceof CharSequence[] in java, but if is a js array, it has no type data on it)
    but of course your use case of localStorage isnt terribly complex, all values are strings, so you really have your pick of approaches here
    Chris Ainsley
    @ainslec
    So hypothetically, if using JSInterop, what would be the wrapper method for returning Object[][] ? Or is JSNI the way to go?
    Colin Alworth
    @niloc132
    well, JsObject.entries exists, so consider using that
    if you dont want to use that, making your own would be roughly
    @JsMethod(name="Object.entries", namespace=JsPackage.GLOBAL)
    static native String[][] objectEntries(Object value);
    the annotation (and native modifier) says "this exists already at this path"
    if you wanted Object[][] that would be fine too, and just cast things as they come out
    anything* jsni can do, jsinterop can do better
    (*there are exceptions, but almost all of them are already managed in the jsinterop-base jar, that way you dont have to think about them)