AbstractAjaxCallback.javaAbstractDefaultAjaxBehavior de Wicket y proporciona un mecanismo esencial de manipulación de URL/script: añade un token de marcador de posición (<PLACEHOLDER>) tanto a la URL de devolución de llamada como al script de devolución de llamada, que las subclases concretas reemplazan con datos específicos del evento (como IDs de eventos, UUIDs de origen o rangos de fechas) a través del método abstracto configureCallbackScript. Esto permite generar scripts de devolución de llamada dinámicos que incrustan identificadores de eventos directamente en el cuerpo de la función JavaScript, en lugar de depender del mecanismo estándar de paso de parámetros de Wicket, lo cual es necesario porque FullCalendar invoca estas devoluciones de llamada con su propia convención de argumentos.
La idea central: Wicket genera una URL de devolución de llamada como /wicket/page?3-1.IBehaviorListener.0-calendar<PLACEHOLDER> y un script de devolución de llamada como function() { Wicket.Ajax.ajax({'u':'...<PLACEHOLDER>'}) }. El método configureCallbackScript(String script, String urlTail) (implementado por las subclases) reemplaza <PLACEHOLDER> en el script con la lógica apropiada de FullCalendar y el parámetro urlTail (que es la URL completa con el marcador de posición) con la URL modificada adecuadamente.
El marcador de posición se añade a getCallbackUrl() mediante concatenación de cadenas: la codificación de URL de Wicket lo preserva literalmente. La sobreescritura de getCallbackScript() intercepta la generación de script de Wicket y pasa tanto el script como la URL aumentada con el marcador de posición a la subclase para su personalización.
Las devoluciones de llamada concretas deben implementar configureCallbackScript(String script, String urlTail). El parámetro script es el JavaScript de devolución de llamada generado por Wicket; urlTail es la URL completa de devolución de llamada con <PLACEHOLDER> añadido. Las subclases reemplazan el marcador de posición con expresiones JavaScript específicas del evento (por ejemplo, concatenando una variable de ID de evento de los argumentos de devolución de llamada de FullCalendar).
El ayudante getCalendar() convierte getComponent() a FullCalendar, proporcionando a las subclases acceso a la instancia del calendario, su configuración y su gestor de eventos. Esto es utilizado por las devoluciones de llamada que necesitan buscar eventos o modificar el estado del calendario.
La clase y sus métodos abstractos son de visibilidad a nivel de paquete: las devoluciones de llamada son internas al paquete callback. El código externo interactúa a través de los métodos plantilla de FullCalendar y el modelo de devolución de llamada Config, no directamente con las clases de comportamiento.
| Commit | Qué cambió |
|---|---|
868d6abb7 a ceb63e8a1 | Seis actualizaciones anuales de encabezado de derechos de autor. El patrón de manipulación de URL/script basado en marcadores de posición se ha mantenido estable: encapsula el desafío central de integración entre el sistema de comportamiento Ajax de Wicket y las convenciones de devolución de llamada JavaScript de FullCalendar. |