AbstractAjaxCallbackWithClientsideRevert.javaFullCalendar implementiert optimistische UI-Updates: Das Ereignis bewegt sich sofort beim Ziehen, und der Server kann es akzeptieren (nichts ändert sich) oder ablehnen (Ereignis kehrt zur ursprünglichen Position zurück). Diese Klasse implementiert die Serverseite dieses Protokolls:
onEvent(AjaxRequestTarget) aufgerufen – die Unterklasse implementiert die Geschäftslogik und gibt true (akzeptieren) oder false (ablehnen) zurück$.data(document, '{uuid}', {boolean})getRevertScript())Eine zufällige UUID (mit dem Präfix "u") identifiziert die Callback-Instanz. Diese UUID wird als jQuery-Datenschlüssel verwendet, um das boolesche Ergebnis zu speichern. Dies vermeidet globale Zustandskollisionen, wenn mehrere Kalenderinstanzen oder mehrere Callback-Typen auf derselben Seite vorhanden sind. Die UUID wird einmal im Feld-Initialisierer generiert und bleibt für die Lebensdauer des Verhaltens bestehen.
updateAjaxAttributes() wird überschrieben, um zwei Listener hinzuzufügen:
onSuccess – führt das Erfolgsskript aus, das bedingt das Rückgängigmachen auslöstonFailure – führt das Rückgängig-Skript bedingungslos aus (Netzwerk-/Serverfehler machen immer rückgängig)Konkrete Unterklassen müssen implementieren:
getRevertScript() – gibt den FullCalendar-JavaScript-Ausdruck zurück, der das Ereignis in seinen ursprünglichen Zustand zurückversetzt (z. B. $('#calendar').fullCalendarExt('revertEvent', eventId))onEvent(AjaxRequestTarget) – die Geschäftslogik zum Akzeptieren/Ablehnen der Änderung| Commit | Was geändert wurde |
|---|---|
868d6abb7 bis ceb63e8a1 | Sechs jährliche Copyright-Header-Updates. Das Zwei-Phasen-Commit-Protokoll und der UUID-basierte Zustandskanal sind stabil – der Mechanismus behandelt FullCalendars optimistisches Update-Muster korrekt und unterscheidet zwischen Ablehnungen aufgrund von Geschäftsregeln (Server gibt false zurück) und Infrastrukturfehlern (Ajax-Fehler löst bedingungsloses Rückgängigmachen aus). |