MDefaultAjaxBehavior.javaAbstractDefaultAjaxBehavior от Wicket с единственной целью: сделать защищённый метод getCallbackScript() общедоступным. В стандартном API Wicket метод getCallbackScript() является защищённым и может вызываться только внутри логики рендеринга самого поведения. Команде Micromata потребовался доступ к этому методу из внешнего кода связывания обратных вызовов — возможно, для интеграции с FullCalendar или других привязок событий на стороне клиента — и они создали этот подкласс, который просто переопределяет getCallbackScript(), вызывая родительскую реализацию с модификатором public.
Это классический обходной манёвр с видимостью в Java: когда библиотека (Wicket) делает метод protected, но вам нужно вызвать его извне иерархии наследования, вы создаёте подкласс, который переопределяет метод и повышает его видимость до public. Переопределённый метод ничего не делает, кроме делегирования вызову super.getCallbackScript(). Этот паттерн часто встречается в кодовых базах Wicket, где инкапсуляция фреймворка препятствует определённым шаблонам интеграции.
Метод getCallbackScript() в Wicket генерирует фрагмент JavaScript, который вызывает URL обратного вызова на сервере с правильными параметрами, токенами защиты от кеширования и настройками Ajax. Интеграция с FullCalendar (см. файлы #2786-2790) требует встраивания этих скриптов обратного вызова внутрь JSON-конфигурации FullCalendar, а не прикрепления их в качестве обработчиков событий DOM. Для этого скрипт обратного вызова должен быть извлечён из поведения и интерполирован в другой контекст — что требует публичного доступа к методу генерации скрипта.
Упоминается в системе обратных вызовов FullCalendar в net.ftlines.wicket.fullcalendar.callback.AbstractAjaxCallback (файл #2789), который также расширяет AbstractDefaultAjaxBehavior и требует манипуляции скриптом обратного вызова для встраивания в обработчики событий календаря.
| Коммит | Что изменилось |
|---|---|
868d6abb7 – ceb63e8a1 |
Шесть ежегодных обновлений заголовков авторских прав. Сам класс — единственное переопределение метода — никогда не требовал изменений с момента первоначальной миграции версии Wicket. Его назначение настолько узко определено, что изменения в API Wicket, скорее всего, будут поглощены без изменений в этой обёртке. |