AbstractAjaxCallbackWithClientsideRevert.javaFullCalendar implémente des mises à jour optimistes de l'interface utilisateur : l'événement se déplace immédiatement lors du glisser, et le serveur peut accepter (rien ne change) ou rejeter (l'événement revient à sa position d'origine). Cette classe implémente le côté serveur de ce protocole :
onEvent(AjaxRequestTarget) est appelé — la sous-classe implémente la logique métier et retourne true (accepter) ou false (rejeter)$.data(document, '{uuid}', {boolean})getRevertScript())Un UUID aléatoire (préfixé par "u") identifie l'instance du callback. Cet UUID est utilisé comme clé de données jQuery pour stocker le résultat booléen. Cela évite les collisions d'état global lorsque plusieurs instances de calendrier ou plusieurs types de callback sont présents sur la même page. L'UUID est généré une fois dans l'initialiseur de champ et persiste pendant toute la durée de vie du comportement.
updateAjaxAttributes() est surchargé pour ajouter deux écouteurs :
onSuccess — exécute le script de succès qui déclenche conditionnellement la réversiononFailure — exécute inconditionnellement le script de réversion (les erreurs réseau/serveur entraînent toujours une réversion)Les sous-classes concrètes doivent implémenter :
getRevertScript() — retourne l'expression JavaScript FullCalendar qui replace l'événement dans son état d'origine (par exemple, $('#calendar').fullCalendarExt('revertEvent', eventId))onEvent(AjaxRequestTarget) — la logique métier pour accepter/rejeter la modification| Commit | Ce qui a changé |
|---|---|
868d6abb7 à ceb63e8a1 | Six mises à jour annuelles des en-têtes de copyright. Le protocole de validation en deux phases et le canal d'état basé sur UUID sont stables — le mécanisme gère correctement le modèle de mise à jour optimiste de FullCalendar et distingue les rejets de règles métier (le serveur retourne false) des défaillances d'infrastructure (une erreur Ajax déclenche une réversion inconditionnelle). |