Config.java@JsonRawValue verhindert doppeltes Escapen von JavaScript-Callback-Text, @JsonIgnore verbirgt interne Wicket-Modelle vor der Serialisierung und @JsonProperty steuert die Feldbenennung.Sieben Callback-Modelle verwenden IModel<String> – Wickets Modellabstraktion für dynamische Werte. Jeder Callback-Getter ist mit @JsonRawValue annotiert, was Jackson anweist, den String-Inhalt des Modells direkt ohne Anführungszeichen in die JSON-Ausgabe einzufügen. Dies ist entscheidend, da die Callback-Strings JavaScript-Funktionskörper sind (z. B. function(event, delta, revertFunc) { ... }) und als roher Code in der FullCalendar-Initialisierung erscheinen müssen, nicht als doppelt angeführte Zeichenfolgen. Die Setter-Methoden bieten Komfort (setEventDrop(String) kapselt in Model.of()) und erweiterte Nutzung (setEventDropModel(IModel) für dynamische Modelle).
Die Verwendung von IModel für Callback-Skripte ermöglicht die dynamische Skriptgenerierung – entscheidend, da diese Skripte Wicket-Ajax-Callback-URLs enthalten, die sich zwischen Anfragen ändern (aufgrund von Anti-Cache-Tokens und Seitenversionierung). Die Methode setupCallbacks() in FullCalendar.java befüllt diese Modelle mit generiertem Skripttext, und Wickets Modellauflösungsmechanismus stellt bei jedem Rendern frische Werte sicher.
Verwendet Joda-Time-Typen (LocalTime für minTime/maxTime), die über die benutzerdefinierten Serialisierer in AbstractFullCalendar serialisiert werden. Die Aufzählung ColumnFormat bildet auf FullCalendars Spaltenkopf-Formatoptionen für Tages-, Wochen- und Monatsansichten ab.
Die Methode add(EventSource) gibt this zurück und unterstützt verkettete Konfiguration. Mehrere Ereignisquellen können fließend hinzugefügt werden: new Config().add(holidaysSource).add(meetingsSource).
| Commit | Was wurde geändert |
|---|---|
868d6abb7 bis ceb63e8a1 | Sechs jährliche Aktualisierungen der Copyright-Header. Das Konfigurationsmodell ist stabil – alle von der Anwendung benötigten FullCalendar-Einstellungen werden in dieser Klasse erfasst, und es waren keine neuen Konfigurationsoptionen über das ursprüngliche Design hinaus erforderlich. |