EN · DE · RU · FR · ES

#2774: MDefaultAjaxBehavior.java

projectforge-wicket/src/main/java/de/micromata/wicket/ajax/MDefaultAjaxBehavior.java Wicket Ajax Behavior (Micromata-Erweiterung) · projectforge-wicket/src/main/java/de/micromata/wicket/ajax/MDefaultAjaxBehavior.java 45 Zeilen · 11 Code · 29 Kommentare · 5 Leer
Ein dünner Wrapper um Wickets AbstractDefaultAjaxBehavior mit einem einzigen Zweck: Die geschützte Methode getCallbackScript() öffentlich zugänglich zu machen. In der Standard-API von Wicket ist getCallbackScript() geschützt und kann nur innerhalb der eigenen Rendering-Logik des Behaviors aufgerufen werden. Das Micromata-Team benötigte Zugriff auf diese Methode aus externem Callback-Verdrahtungscode – möglicherweise für die FullCalendar-Integration oder andere clientseitige Ereignisbindungen – und erstellte diese Unterklasse, die einfach getCallbackScript() überschreibt, um die Elternimplementierung mit public-Sichtbarkeit aufzurufen.

Architektur

Das Sichtbarkeits-Hack-Muster

Dies ist ein klassischer Java-Sichtbarkeits-Workaround: Wenn eine Bibliothek (Wicket) eine Methode als protected deklariert, man sie aber außerhalb der Vererbungshierarchie aufrufen muss, erstellt man eine Unterklasse, die die Methode überschreibt und ihre Sichtbarkeit auf public erhöht. Die überschriebene Methode tut nichts außer an super.getCallbackScript() zu delegieren. Dieses Muster ist in Wicket-Codebasen verbreitet, wo die Kapselung des Frameworks bestimmte Integrationsmuster verhindert.

Warum es benötigt wird

Wickets getCallbackScript() generiert das JavaScript-Snippet, das die serverseitige Callback-URL mit den korrekten Parametern, Anti-Cache-Tokens und Ajax-Einstellungen aufruft. Die FullCalendar-Integration (siehe Dateien #2786-2790) muss diese Callback-Skripte in FullCalendar-Konfigurations-JSON einbetten, anstatt sie als DOM-Ereignishandler anzuhängen. Dazu muss das Callback-Skript aus dem Behavior extrahiert und in einen anderen Kontext interpoliert werden – was öffentlichen Zugriff auf die Skriptgenerierungsmethode erfordert.

Verwendungskontext

Referenziert aus dem FullCalendar-Callback-System in net.ftlines.wicket.fullcalendar.callback.AbstractAjaxCallback (Datei #2789), das ebenfalls AbstractDefaultAjaxBehavior erweitert und das Callback-Skript für die Einbettung in Kalender-Ereignishandler manipulieren muss.

Git-Verlauf

CommitWas geändert wurde
868d6abb7 bis ceb63e8a1Sechs jährliche Aktualisierungen der Copyright-Header. Die Klasse selbst – eine einzelne Methodenüberschreibung – musste seit der ursprünglichen Wicket-Version-Migration nie geändert werden. Ihr Zweck ist so eng definiert, dass Änderungen an der Wicket-API wahrscheinlich ohne Änderungen an diesem Wrapper absorbiert würden.