AbstractAjaxCallbackWithClientsideRevert.javaFullCalendar implementa actualizaciones optimistas de la interfaz de usuario: el evento se mueve inmediatamente al arrastrar, y el servidor puede aceptar (nada cambia) o rechazar (el evento vuelve a su posición original). Esta clase implementa la parte del servidor de ese protocolo:
onEvent(AjaxRequestTarget) — la subclase implementa la lógica de negocio y devuelve true (aceptar) o false (rechazar)$.data(document, '{uuid}', {boolean})getRevertScript())Un UUID aleatorio (prefijado con "u") identifica la instancia de devolución de llamada. Este UUID se utiliza como clave de datos jQuery para almacenar el resultado booleano. Esto evita colisiones de estado global cuando hay múltiples instancias de calendario o múltiples tipos de devolución de llamada en la misma página. El UUID se genera una vez en el inicializador de campo y persiste durante la vida útil del comportamiento.
updateAjaxAttributes() se sobrescribe para añadir dos oyentes:
onSuccess — ejecuta el script de éxito que condicionalmente desencadena la reversiónonFailure — ejecuta incondicionalmente el script de reversión (los errores de red/servidor siempre revierten)Las subclases concretas deben implementar:
getRevertScript() — devuelve la expresión JavaScript de FullCalendar que revierte el evento a su estado original (por ejemplo, $('#calendar').fullCalendarExt('revertEvent', eventId))onEvent(AjaxRequestTarget) — la lógica de negocio para aceptar/rechazar el cambio| Commit | Qué cambió |
|---|---|
868d6abb7 a ceb63e8a1 | Seis actualizaciones anuales del encabezado de derechos de autor. El protocolo de confirmación en dos fases y el canal de estado basado en UUID han sido estables — el mecanismo maneja correctamente el patrón de actualización optimista de FullCalendar y distingue entre rechazos por reglas de negocio (el servidor devuelve falso) y fallos de infraestructura (el error Ajax desencadena una reversión incondicional). |