Archiv für die Kategorie 'gwt'

GWT setFocus() – Deferred Command

Freitag, 30. Oktober 2009

Ich hatte vor kurzem im heiß geliebten IE6 das Problem, dass das Setzen des Focus auf eine TextBox mittels der Methode “setFocus()” keine Auswirkung hatte. Im Firefox hingegen hat es auf Anhieb geklappt. Nach kurzem rumprobieren hab ich es mit Hilfe eines sogenannten “Deferred Commands” – durch die Klasse DeferredCommand – gelöst. Damit ist es möglich, ein Quellcode-Abschnitt, welcher in einem Command gekapselt wird (siehe Entwurfsmuster Command Pattern), ausserhalb des aktuellen Kontextes NACH allen Handlern auszuführen. Die Umsetzung sieht dann wie folgt aus:

 DeferredCommand.add(new Command() {
      public void execute() {
        myTextbox.setFocus(true);
      }
    });

Und siehe da… wenn der Focus erst ganz zum Schluss des aktuellen Call-Stacks ausgeführt wird, klappts auch mit dem IE6 !

GWT 1.7 released – Bugfixing, Safari 4, Firefox 3.5, IE 8

Dienstag, 14. Juli 2009

Wie ich gerade auf der GWT-Homepage entdeckt habe, wurde GWT 1.7 released. Das Release enthält hauptsächlich kritische Bugfixes und stellt die Kompatibilität zu IE 8, FF 3.5 und Safari 4 sicher.
Was mich jedoch besonders freut ist, dass mein gemeldeter Bug im Zuge der Version 1.7 gefixt wurde. Und das bei lediglich 8 Bug-Fixes… yiiiha ;)

GWT 1.6.4 – Timestamp.valueOf()

Montag, 22. Juni 2009

So wie es aussieht wurde ganz schön gepfuscht bei der Emulierung der paar Klassen im java.sql Package ;)

Nach dem von mir vor kurzem berichteten Bug  in der Date.valueOf()-Methode, bin ich nun auf ein abweichendes Verhalten bzw. Bug in der emulierten Timestamp.valueOf()-Methode (auch wieder im java.sql-Package) gestoßen. Denn bei einem String wie bspw. 2009-12-01 10:10:58.11 kann nicht einfach so wie vermutet, und wie es auch in JRE der Fall ist, ein Timestamp-Objekte mittels Timestamp.valueOf() erzeugt werden. Denn die emulierte Timetsamp.valueOf() Methode schmeißt eine IllegalArgumentException, wenn nicht hagenau das Format yyyy-mm-dd hh:mm:ss.fffffffff eingehalten wird. D.h. die Nanosekunden müssen genau 9 Zeichen lang sein… argh. So wie ich das Gefühl habe wurden die Klassen im java.sql Package auf die schnelle noch emuliert… oder zumindest versucht :)

GWT 1.6.4 – IlegalArgumentException in Date.valueOf()

Montag, 15. Juni 2009

Ich arbeite jetzt schon mehrere Monate an einem GWT-Client als Aufsatz zu einer J2EE Anwendung. Dabei kommt nicht GWT-RPC zum Einsatz, welches sich ja das Marshalling bzw. Unmarshalling direkt mitbringt, sondern diese Aufgaben wurden selbst implementiert. Der Grund dafür ist die Unabhängigkeit einer nicht proprietären Lösung, welche nötig für weitere Clients war.

Anscheinend nutzen jedoch wohl die meisten GWT-RPC, denn ich bin auf einen üblen Bug in einer recht wichtigen Methode, nähmlich in Date.valueOf(), gestoßen. Es ist darin nicht möglich ein Date-Objekt anhand bspw. dem String 2009-08-10 zu erstellen. Das fieße dabei ist noch, das im Hosted mode alles funktioniert aber im Web Mode dann die große Überraschung kommt… IllegalArgumentException innerhalb Date.valueOf().

Nach näherem Durchwühlen des Sourcecodes der emulierten Date.valueOf()-Methode war der Grund schnell klar. Die Monate und Tage werden mittels der Methode Integer.decode() in einen Integer umgewandelt. Das interessante ist jedoch, das diese Methode bei Zahlen mit führenden Nullen von einer Oktalzahl ausgeht. Da es die 8 jedoch nicht im Oktalsystem gibt, fliegt eine unerwartete Exception. Die Lösung dafür ist vor dem Aufruf von Date.valueOf() die Nullen vor dem Tag und dem Monat entfernen.

Das schöne daran war jedoch die schnelle Reaktion von google nach Erstellen eines Tickets (http://code.google.com/p/google-web-toolkit/issues/detail?id=3731&q=date.valueof). Innerhalb von 2 Tagen wurde das Ticket validiert, als kritisch eingestuft und der Bug wird beim nächsten Release gefixt sein. Bin sehr begeistert der schnellen Reaktion!

Willkommen auf Java-Stage!

Freitag, 17. April 2009

Parallel zu meinem PHP-Pendant php-stage.de beschäftigt sich dieser Blog run um das Thema Java, mit dem ich mich zurzeit intensiv geschäftlich beschäftige. Ziel dabei ist es, wie auch bei php-stage.de, einerseits mir selbst ein Nachschlagewerk zu erstellen, und andererseits meine Kenntnisse und Erfahrungen zu verbreiten.

Momentan treibe ich mich speziell in folgenden Bereichen rum:

  • GWT 1.6 – Google Web Toolkit
  • Spring 2.5 (core, mvc, aop)
  • Hibernate 3
  • Java SE + Java EE 1.5
  • Allgemeine Software-Entwicklung

Ihr könnt in nächster Zeit also mit interessanten Artikeln speziell zu diesen Themen rechnen.

So, stay tuned!