Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

|
//

SmartGWT – Tipps und Tricks

3.4.2011 | 2 Minuten Lesezeit

SmartGWT ist eine sehr interessante GWT Erweiterung, um Rich Client Web Anwendungen zu entwickeln. Wir haben dieses Framework in einem Projekt benutzt, um eine bestehende Client Anwendung ins Web zu bringen.

Sehr hilfreich waren dabei die unzähligen Widgets und der SmartGWT Showcase in dem man auch die dazugehörigen Code Schnipsel sehen kann.

Im Großen empfanden wir die Entwicklung mit dieser Bibliothek als sehr angenehm. Allerdings sind uns auch ein paar Unstimmigkeiten aufgefallen, zu denen wir Workarounds gefunden haben, über die ich hier schreiben möchte.

Probleme bei der Enwicklung

IDs von Widgets

Die IDs der Oberflächen Widgets sollten immer als erstes direkt nach der Initialisierung gesetzt werden. Wenn man die ID erst nach einigen Zuweisungen wie addCellDoubleClickHandler setzt, wird man sich wundern, warum der Doppelklick keine Wirkung hat.

1list = new ListGrid();
2list.setID("list");
3list.addCellDoubleClickHandler(new SearchResultDoubleClickHandler(this));

Dies kann ich isoliert mit der aktuellsten SmartGWT 2.4 und GWT 2.2.0 nicht mehr nachstellen, es scheint also mitlerweile behoben zu sein.

TextItem.setKeyPressFilter

Bei der Verwendung von der Funktion setKeyPressFilter bei dem Widget TextItem kommt es zu Problemen, wenn man zusätzlich zu dem Filter noch ein KeyPressHandler implementieren möchte. Der eigene KeyPressHandler deaktiviert dann leider den KeyPressFilter. Der Workaround ist einen zusätzlichen zweiten KeyPressHandler zu schreiben, der die gleiche Funktionalität wie der KeyPressFilter hat und man somit das Framework Feature leider nicht verwendet.

1private class NumericKeyPressHandler implements KeyPressHandler {
2        /**
3         * @see com.smartgwt.client.widgets.form.fields.events.KeyPressHandler#onKeyPress(com.smartgwt.client.widgets.form.fields.events.KeyPressEvent)
4         */
5        public void onKeyPress(KeyPressEvent event) {
6            if (!event.getKeyName().matches("[0-9]")) {
7                event.cancel();
8            }
9        }
10    }

Hierfür habe ich einen Bug bei SmartGWT eingestellt: http://code.google.com/p/smartgwt/issues/detail?id=576 . Dieser Bug wurde für die SmartGWT Version 2.4 bestätigt und ist in den nightly builds behoben.

Probleme beim Zusammenspiel von SmartGWT und automatisierte Tests mit dem Robot Framework

Offline.put/.get

Die Offline Funktionalität von SmartGWT ist ein wunderbares Feature, um mit HTML5 Funktionalitäten Werte auf dem Client zu persistieren und somit auf manuelles setzen von Cookies zu verzichten. Allerdings konnten wir im Zusammenspiel mit unseren automatisierten Robottests kein Keyword finden, welches uns die Inhalte des permanenten Browser Speichers ausliest bzw. schreibt. Dies kann allerdings durch ein einfaches Javascript umgegangen werden. Dieses Beispiel setzt einen Eintrag im „Permanent Browser Cache“.

1Execute JavaScript  window.localStorage['${name}']='${value}';

DOCTYPE tag in HTML Bootstrap Datei

Die SmartGWT Best Practices schreiben vor keinen Doktype Tag in der bootstrap HTML Datei zu verwenden, um z.B. den IE im „quirks mode“ starten zu lassen. Dies führt allerdings zu keinen Screenshots in automatisierten Robottests. Als Lösung hierfür haben wir für den Selenium Test eine extra mainAccTest.jsp erstellt, der einen Doctype Header besitzt und die normale main.jsp includiert. Diese jsp wird ausschließlich für die automatisierten Tests verwendet und somit funktionieren auch die automatisierten Screenshots bei den Tests wieder.

Weitere SmartGWT Erfahrungen findet man hier: Testing SmartGWT Applications with Selenium and Robot Framework .

|

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.