Ведение журнала действий пользователя в Wicket

Я экспериментирую с Wicket и поиском событий. Я пытаюсь регистрировать действия пользователя, чтобы мы могли воспроизвести их или использовать для тестирования или демонстрации.

Что бы вы посоветовали в качестве стратегии?

Например, я мог бы определить классы действий и поместить их в onsubmit и т. Д. Или переопределить все компоненты «действия» калитки, например ссылка, кнопка, текстовое поле. И Т. Д.

Есть хороший совет?


person RobAu    schedule 30.12.2012    source источник


Ответы (4)


Используйте регистратор запросов поставляется с Wicket «из коробки», начиная с версии 1.2 (хотя его реализация за эти годы значительно изменилась). При этом регистрируются цели запроса и ответы в формате JSON (в версии 6.0, см. Расширения калитки) для синтаксического анализа. Обратите внимание, что в зависимости от количества пользователей это может создать громоздкий журнал.

person Martijn Dashorst    schedule 09.01.2013
comment
Кажется, что средство ведения журнала запросов может регистрировать класс компонента, но не сам экземпляр. Что было бы хорошим подходом для получения экземпляра? - person RobAu; 15.01.2013
comment
См. Метод IRequestLogger # logEventTarget (ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/) и IComponentRequestTarget, чтобы получить экземпляр компонент - person Martijn Dashorst; 22.01.2014

ВНИМАНИЕ! Это НЕ решение проблемы. Это может работать только с ajax, но я тоже в этом не уверен.

Вы можете использовать IComponentInstantiationListener, чтобы проверить, созданы ли новые компоненты и доступны ли они для щелчка мышью или нет. Затем вы можете прикрепить Logging-Behavior. Таким образом, вы можете легко включать и выключать вход в систему в одном месте, и вам не придется создавать подклассы для каждого класса Link-, Button и Whatnot-класса для ведения журнала.

person Nicktar    schedule 31.12.2012
comment
Я понял, но как поведение может «захватить» метод onClick, например, в Link? ИЛИ это будет работать только для ссылок с поддержкой Ajax, и могу ли я переопределить событие AjaxClick по умолчанию? - person RobAu; 03.01.2013
comment
@RobAu Хороший вопрос. Сам я этого никогда не делал, но уверен, что где-то это видел. Я думаю, вам придется реализовать IBehaviourListener в своем поведении и поместить часть ведения журнала в метод onRequest. Я вернусь к вам позже с более определенным ответом, если он вам понадобится. - person Nicktar; 03.01.2013
comment
Привет, Никтар, заглянул в IBehaviorListener, но я все еще немного не понимаю, как получить onclick из запроса. Есть намеки на это? - person RobAu; 08.01.2013
comment
@RobAu Я пытался пару часов узнать, где я это видел или как это должно работать, но мне это не удалось. Мне ужасно жаль, что я зря потратил ваше время. Я попытался удалить свой ответ, но не могу, так как он принят. Опять же, мне очень жаль. - person Nicktar; 08.01.2013
comment
Пожалуйста, оставьте ответ, он дает представление о методах и идеях. Я снял галочку "принято". Спасибо за ваши усилия! - person RobAu; 08.01.2013

Сама Wicket не предоставляет ловушек для чего-то подобного, но в зависимости от других технологий, которые вы используете, вы можете сделать это на уровне постоянства - например, с @PreRemove, @PreUpdate, @PrePersist JPA. Другой подход - это аспектно-ориентированное программирование (АОП).

person martin-g    schedule 31.12.2012

Учитывая, что каждое действие пользователя представляет собой HTTP-запрос ajax или классический, вы можете регистрировать каждый запрос (каждый запрос имеет путь к компоненту) с некоторыми необходимыми идентификаторами. В Wicket 1.4 вы расширяете цикл запроса, в 1.5+ добавляете слушателя цикла запроса.

См. https://cwiki.apache.org/WICKET/requestcycle-in-wicket-15.html

person Roman Grigoriadi    schedule 31.12.2012