EN · DE · RU · FR · ES

#2773: AjaxFormSubmitCallback.java

projectforge-wicket/src/main/java/de/micromata/wicket/ajax/AjaxFormSubmitCallback.java Java-интерфейс (Micromata Wicket Ajax Form) · projectforge-wicket/src/main/java/de/micromata/wicket/ajax/AjaxFormSubmitCallback.java 39 строк · 7 кода · 28 комментариев · 4 пустых
Специализация AjaxCallback для сценариев отправки форм Wicket. Расширяет базовый контракт обратного вызова методом onError(AjaxRequestTarget, Form<?>), который срабатывает при неудачной валидации формы. Этот интерфейс разделяет путь успеха (унаследованный метод callback) и путь ошибки (новый метод onError), следуя шаблонному методу на уровне интерфейса. Реализации получают как Ajax-цель (для обновления сообщений об ошибках в DOM), так и экземпляр формы (для проверки ошибок валидации).

Архитектура

Двухфазный шаблон обратного вызова

Разделение обработки успеха и ошибок на уровне интерфейса является преднамеренным. Формы Wicket работают в двухфазном цикле валидации: сначала форма проверяется, затем запускается обработчик успеха или ошибки. Кодируя оба результата в контракте интерфейса, вызывающий код в пользовательских Ajax-поведениях Micromata может безусловно вызывать соответствующий метод на основе состояния валидации формы, без необходимости в рефлексии или instanceof-проверках.

Требование сериализации

Как и его родительский AjaxCallback, этот интерфейс расширяет Serializable. В архитектуре хранилища страниц Wicket (которая может сериализовать страницы на диск или в базу данных между запросами) реализации обратных вызовов должны выдерживать сериализацию. Это обычное ограничение Wicket — любой объект, прикреплённый к дереву компонентов, должен реализовывать Serializable.

История Git

КоммитЧто изменилось
868d6abb7ceb63e8a1Шесть ежегодных обновлений заголовков авторских прав (2001-2021 → 2001-2026), охватывающих всю историю файла. Сам интерфейс никогда не изменялся после первоначального создания — контракт обратного вызова отправки формы оказался достаточным для всех сценариев обработки форм в приложении.