EN · DE · RU · FR · ES

#2774: MDefaultAjaxBehavior.java

projectforge-wicket/src/main/java/de/micromata/wicket/ajax/MDefaultAjaxBehavior.java Comportamiento Ajax de Wicket (Extensión Micromata) · projectforge-wicket/src/main/java/de/micromata/wicket/ajax/MDefaultAjaxBehavior.java 45 líneas · 11 código · 29 comentarios · 5 en blanco
Un envoltorio ligero alrededor de AbstractDefaultAjaxBehavior de Wicket con un único propósito: hacer que el método protegido getCallbackScript() sea accesible públicamente. En la API estándar de Wicket, getCallbackScript() está protegido y solo se puede llamar desde la lógica de renderizado propia del comportamiento. El equipo de Micromata necesitaba acceder a este método desde código externo de cableado de devoluciones de llamada —posiblemente para la integración con FullCalendar u otros enlaces de eventos del lado del cliente— y creó esta subclase que simplemente sobrescribe getCallbackScript() para llamar a la implementación padre con visibilidad public.

Arquitectura

El patrón de hackeo de visibilidad

Esta es una solución clásica de visibilidad en Java: cuando una biblioteca (Wicket) hace que un método sea protected pero necesitas llamarlo desde fuera de la jerarquía de herencia, creas una subclase que sobrescribe el método y promueve su visibilidad a public. El método sobrescrito no hace nada más que delegar en super.getCallbackScript(). Este patrón es común en bases de código de Wicket donde la encapsulación del framework impide ciertos patrones de integración.

Por qué es necesario

El método getCallbackScript() de Wicket genera el fragmento de JavaScript que invoca la URL de devolución de llamada del servidor con los parámetros correctos, tokens anti-caché y configuraciones Ajax. La integración con FullCalendar (ver archivos #2786-2790) necesita incrustar estos scripts de devolución de llamada dentro del JSON de configuración de FullCalendar en lugar de adjuntarlos como manejadores de eventos del DOM. Para hacer esto, el script de devolución de llamada debe extraerse del comportamiento e interpolarse en un contexto diferente —lo que requiere acceso público al método de generación de scripts.

Contexto de uso

Referenciado desde el sistema de devolución de llamada de FullCalendar en net.ftlines.wicket.fullcalendar.callback.AbstractAjaxCallback (archivo #2789), que también extiende AbstractDefaultAjaxBehavior y necesita manipular el script de devolución de llamada para incrustarlo en los manejadores de eventos del calendario.

Historial de Git

CommitQué cambió
868d6abb7 hasta ceb63e8a1Seis actualizaciones anuales del encabezado de derechos de autor. La clase en sí —una única sobrescritura de método— nunca ha requerido modificación desde la migración inicial de la versión de Wicket. Su propósito está tan estrechamente definido que los cambios en la API de Wicket probablemente se absorberían sin cambios en este envoltorio.