Praxisbuch Wicket - Professionelle Web-2.0-Anwendungen entwickeln

von: Michael Mosmann

Carl Hanser Fachbuchverlag, 2009

ISBN: 9783446421417 , 314 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 31,99 EUR

Mehr zum Inhalt

Praxisbuch Wicket - Professionelle Web-2.0-Anwendungen entwickeln


 

12 Fehlersuche (S. 287-288)

Normalerweise gestaltet sich die Fehlersuche in Wicket-Anwendungen relativ einfach. Wenn der Code kompiliert werden konnte, ist man meistens schon fast am Ziel. Wie man die letzten Klippen umschifft und bei Fehlern schnell auf deren Ursache kommt, ist Ziel des folgenden Kapitels. Häufige Fehlerquellen Wicket bietet wenig Spielraum für schwer zu lokalisierende Fehler. Das bedeutet aber nicht, dass man nicht auch mit Wicket Fehler machen kann. Die folgenden Fehlerquellen sollte man Hinterkopf haben, damit die Suche kurz bleibt.

12.1.1 Komponenten fehlen

Die häufigsten Fehlerquellen sind Abweichungen zwischen dem Komponentenbaum und den Referenzen im Markup. Das erklärt sich recht einfach: Wenn der Code kompiliert werden konnte, konnte man eine große Fehlerquelle erfolgreich ausschließen. Jetzt kann es aber vorkommen, dass man vergessen hat, eine Komponente im Markup zu referenzieren. Oder man hat eine Komponente im Markup referenziert, die es an der Stelle nicht gibt. Für beide Fälle gibt Wicket passende Fehlermeldungen aus, die man sich genau durchlesen sollte. Wenn Wicket behauptet, dass man eine Komponente referenziert, die im Komponentenbaum nicht vorkommt, ist es auch nicht unwahrscheinlich, dass man die Komponente zwar erstellt, aber nicht mit add() hinzugefügt hat.

12.1.2 Komponente ist bereits vorhanden

Es gibt verschiedene Situationen, die dazu führen können, dass Wicket der Meinung ist, dass es eine Komponente mit dieser ID schon gibt. Dazu muss man Folgendes beachten: Während man mit add() Komponenten hinzufügt, wird schon geprüft, ob es in der aktuel len Hierarchieebene bereits eine Komponente mit der gleichen ID gibt. Es ist zu diesem Zeitpunkt irrelevant, ob diese Komponente im Markup überhaupt referenziert wird. Im einfachsten Fall hat man wirklich eine Komponente mit der ID bereits hinzugefügt. Spannender wird es, wenn man eine Komponente hinzufügt und sich sicher ist, dass es diese ID noch nicht gibt.

Das kann besonders bei Border-Komponenten auftreten, da sich die internen Komponenten auf derselben Hierarchieebene befinden. Der komplizierteste Fall ist gleichzeitig der häufigste. Wenn man mal das Muster erkannt hat, dann findet man auch diesen Fehler recht schnell. In einer ListView fügt man die Komponente fälschlicherweise nicht zum ListItem-, sondern zur ListView-Komponente hinzu (statt item.add() schreibt man nur add()). Das bedeutet, dass bei einer Listenlänge von mindestens zwei (was häufig der Fall ist) Wicket die Fehlermeldung ausgibt, dass es eine Komponente mit dieser ID bereits gibt. Man sollte der Versuchung widerstehen und prüfen, ob man eine ID doppelt vergeben hat, sondern dazu übergehen, in der entsprechenden Methode zu prüfen, ob man die Komponenten an das ListItem und nicht an die ListView gehängt hat.

12.1.3 Ajax funktioniert nicht

Dass Ajax nicht funktioniert, liegt am häufigsten daran, dass es kein geeignetes HTMLTag gibt, an das die per Ajax zu aktualisierende Komponente gebunden ist. Die Verwendung von wicket:container anstelle eines div-Tags kann dazu führen, dass der Java- Script-Aufruf zum Tauschen des Inhalts kein passendes HTML-Tag finden kann. In den meisten anderen Fällen gibt Wicket entsprechende Fehlermeldungen aus.