EN · DE · RU · FR · ES

#2789: AbstractAjaxCallback.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractAjaxCallback.java Comportamiento abstracto de Wicket (base de devolución de llamada Ajax de FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractAjaxCallback.java 65 líneas · 18 código · 37 comentarios · 10 en blanco
La clase base abstracta para todos los comportamientos de devolución de llamada Ajax de FullCalendar. Extiende AbstractDefaultAjaxBehavior 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.

Arquitectura

Patrón de marcador de posición

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.

Contrato de subclase

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).

Acceso al calendario

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.

Visibilidad a nivel de paquete

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.

Historial de Git

CommitQué cambió
868d6abb7 a ceb63e8a1Seis 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.