Config.java@JsonRawValue evita el doble escape del texto de callback de JavaScript, @JsonIgnore oculta los modelos internos de Wicket de la serialización, y @JsonProperty controla la nomenclatura de campos.Siete modelos de callback utilizan IModel<String> — la abstracción de modelo de Wicket para valores dinámicos. Cada getter de callback está anotado con @JsonRawValue, lo que le indica a Jackson que inserte el contenido de cadena del modelo directamente en la salida JSON sin entrecomillar. Esto es crítico porque las cadenas de callback son cuerpos de funciones JavaScript (ej., function(event, delta, revertFunc) { ... }) y deben aparecer como código sin procesar en la inicialización de FullCalendar, no como cadenas entrecomilladas. Los métodos setter proporcionan comodidad (setEventDrop(String) envuelve en Model.of()) y avanzados (setEventDropModel(IModel) para modelos dinámicos).
El uso de IModel para scripts de callback permite la generación dinámica de scripts — crítico porque estos scripts contienen URLs de callback Ajax de Wicket que cambian entre solicitudes (debido a tokens anti-caché y versionado de página). El método setupCallbacks() en FullCalendar.java llena estos modelos con texto de script generado, y el mecanismo de resolución de modelos de Wicket asegura valores actualizados en cada renderizado.
Utiliza tipos Joda-Time (LocalTime para minTime/maxTime) que se serializan mediante los serializadores personalizados en AbstractFullCalendar. El enum ColumnFormat se asigna a las opciones de formato de encabezado de columna de FullCalendar para las vistas de día, semana y mes.
El método add(EventSource) devuelve this, permitiendo la configuración encadenada. Se pueden añadir múltiples fuentes de eventos de forma fluida: new Config().add(holidaysSource).add(meetingsSource).
| Commit | Qué cambió |
|---|---|
868d6abb7 hasta ceb63e8a1 | Seis actualizaciones anuales de encabezado de derechos de autor. El modelo de configuración se ha mantenido estable — todos los ajustes de FullCalendar necesarios para la aplicación están capturados en esta clase, y no se han requerido nuevas opciones de configuración más allá del diseño inicial. |