AbstractAjaxCallback.javaAbstractDefaultAjaxBehavior und bietet einen wesentlichen URL/Skript-Manipulationsmechanismus: Es hängt einen Platzhalter-Token (<PLACEHOLDER>) sowohl an die Callback-URL als auch an das Callback-Skript an, den konkrete Unterklassen durch die abstrakte Methode configureCallbackScript durch ereignisspezifische Daten (wie Ereignis-IDs, Quell-UUIDs oder Datumsbereiche) ersetzen. Dies ermöglicht dynamisch generierte Callback-Skripte, die Ereignis-Identifikatoren direkt in den JavaScript-Funktionskörper einbetten, anstatt auf Wickets standardmäßigen Parameterübergabemechanismus angewiesen zu sein, was notwendig ist, da FullCalendar diese Callbacks mit seiner eigenen Argumentkonvention aufruft.Die Kernidee: Wicket generiert eine Callback-URL wie /wicket/page?3-1.IBehaviorListener.0-calendar<PLACEHOLDER> und ein Callback-Skript wie function() { Wicket.Ajax.ajax({'u':'...<PLACEHOLDER>'}) }. Die Methode configureCallbackScript(String script, String urlTail) (von Unterklassen implementiert) ersetzt <PLACEHOLDER> im Skript durch eine FullCalendar-gerechte Logik und den Parameter urlTail (die vollständige URL mit Platzhalter) durch die entsprechend modifizierte URL.
Der Platzhalter wird an getCallbackUrl() mittels Zeichenkettenverkettung angehängt – Wickets URL-Kodierung bewahrt ihn wörtlich. Die Überschreibung von getCallbackScript() fängt Wickets Skriptgenerierung ab und übergibt sowohl das Skript als auch die mit Platzhaltern angereicherte URL zur Anpassung an die Unterklasse.
Konkrete Callbacks müssen configureCallbackScript(String script, String urlTail) implementieren. Der Parameter script ist das von Wicket generierte Callback-JavaScript; urlTail ist die vollständige Callback-URL mit angehängtem <PLACEHOLDER>. Unterklassen ersetzen den Platzhalter durch ereignisspezifische JavaScript-Ausdrücke (z. B. Verkettung einer Ereignis-ID-Variable aus FullCalbacks Callback-Argumenten).
Der Helfer getCalendar() castet getComponent() zu FullCalendar und bietet Unterklassen Zugriff auf die Kalenderinstanz, ihre Konfiguration und ihren Ereignismanager. Dies wird von Callbacks verwendet, die Ereignisse nachschlagen oder den Kalenderzustand ändern müssen.
Die Klasse und ihre abstrakten Methoden sind paket-privat – Callbacks sind intern im Paket callback. Externer Code interagiert über die Template-Methoden von FullCalendar und das Callback-Modell von Config, nicht direkt mit den Verhaltensklassen.
| Commit | Was wurde geändert |
|---|---|
868d6abb7 bis ceb63e8a1 | Sechs jährliche Aktualisierungen der Copyright-Header. Das auf Platzhaltern basierende Muster zur Callback-URL/Skript-Manipulation ist stabil – es kapselt die zentrale Integrationsherausforderung zwischen Wickets Ajax-Verhaltenssystem und FullCalbacks JavaScript-Callback-Konventionen. |