EN · DE · RU · FR · ES

#2789 : AbstractAjaxCallback.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractAjaxCallback.java Comportement Wicket abstrait (base de rappel Ajax FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractAjaxCallback.java 65 lignes · 18 code · 37 commentaires · 10 vides
La classe de base abstraite pour tous les comportements de rappel Ajax FullCalendar. Étend le AbstractDefaultAjaxBehavior de Wicket et fournit un mécanisme essentiel de manipulation d'URL/script : elle ajoute un jeton d'espace réservé (<PLACEHOLDER>) à la fois à l'URL de rappel et au script de rappel, que les sous-classes concrètes remplacent par des données spécifiques à l'événement (comme les ID d'événement, les UUID source ou les plages de dates) via la méthode abstraite configureCallbackScript. Cela permet de générer dynamiquement des scripts de rappel qui intègrent des identifiants d'événement directement dans le corps de la fonction JavaScript, plutôt que de s'appuyer sur le mécanisme standard de passage de paramètres de Wicket, ce qui est nécessaire car FullCalendar invoque ces rappels avec sa propre convention d'arguments.

Architecture

Modèle d'espace réservé

L'idée centrale : Wicket génère une URL de rappel comme /wicket/page?3-1.IBehaviorListener.0-calendar<PLACEHOLDER> et un script de rappel comme function() { Wicket.Ajax.ajax({'u':'...<PLACEHOLDER>'}) }. La méthode configureCallbackScript(String script, String urlTail) (implémentée par les sous-classes) remplace <PLACEHOLDER> dans le script par une logique appropriée à FullCalendar et le paramètre urlTail (qui est l'URL complète avec l'espace réservé) par l'URL modifiée de manière appropriée.

L'espace réservé est ajouté à getCallbackUrl() par concaténation de chaînes — l'encodage d'URL de Wicket le préserve littéralement. La substitution de getCallbackScript() intercepte la génération de script de Wicket et transmet à la fois le script et l'URL augmentée de l'espace réservé à la sous-classe pour personnalisation.

Contrat de sous-classe

Les rappels concrets doivent implémenter configureCallbackScript(String script, String urlTail). Le paramètre script est le JavaScript de rappel généré par Wicket ; urlTail est l'URL de rappel complète avec <PLACEHOLDER> ajouté. Les sous-classes remplacent l'espace réservé par des expressions JavaScript spécifiques à l'événement (par exemple, en concaténant une variable d'ID d'événement provenant des arguments de rappel de FullCalendar).

Accès au calendrier

L'assistant getCalendar() convertit getComponent() en FullCalendar, fournissant aux sous-classes un accès à l'instance du calendrier, sa configuration et son gestionnaire d'événements. Ceci est utilisé par les rappels qui doivent rechercher des événements ou modifier l'état du calendrier.

Visibilité privée au package

La classe et ses méthodes abstraites sont privées au package — les rappels sont internes au package callback. Le code externe interagit via les méthodes template de FullCalendar et le modèle de rappel Config, pas directement avec les classes de comportement.

Historique Git

CommitCe qui a changé
868d6abb7 à ceb63e8a1Six mises à jour annuelles des en-têtes de droits d'auteur. Le modèle de manipulation d'URL/script basé sur un espace réservé est stable — il encapsule le défi d'intégration central entre le système de comportement Ajax de Wicket et les conventions de rappel JavaScript de FullCalendar.