Как получить AjaxRequestTarget внутри метода Wicket onBeforeRender() компонента?

У меня есть событие Ajax, которое запускает перерисовку различных панелей Wicket. Некоторые панели имеют собственные дополнительные вычисления внутри метода onBeforeRender(). Если есть ошибка, я хочу показать ее пользователю. Но я не могу добавить FeedbackPanel в AjaxRequestTarget, потому что у меня больше нет доступа к ней внутри перерисовываемой панели.

Есть ли способ получить AjaxRequestTarget внутри onBeforeRender() компонента Wicket? Возможно ли вообще добавить дополнительные компоненты к цели Ajax, когда первые уже находятся в состоянии onBeforeRender()?

Есть ли лучший способ добавить FeedbackPanel в цель Ajax, если только панели, которые необходимо перерисовать, могут решить, есть ли ошибка или нет?


person black666    schedule 08.10.2013    source источник
comment
Я не знаю, что делает ваше приложение, но я сомневаюсь, что расчет бизнес-логики на onBeforeRender() является хорошей идеей.   -  person Robert Niestroj    schedule 08.10.2013
comment
Был статический AjaxRequestTarget.get() еще в Wicket 1.4 (похоже, его нет в Wicket 6). Однако, как уже указывал Роберт, логика проверки и сообщения об ошибках не должны обрабатываться в onBeforeRender().   -  person Xavi López    schedule 08.10.2013


Ответы (1)


Получение AjaxTarget делается так:

AjaxRequestTarget target = requestCycle.find(AjaxRequestTarget.class);

К сожалению, как и ожидалось, я не могу добавлять компоненты в цель, пока я нахожусь на этапе рендеринга. Но Wicket предоставляет интерфейс ITargetRespondListener методом onTargetRespond(AjaxRequestTarget target). Здесь я могу добавить к цели все, что захочу.

person black666    schedule 08.10.2013
comment
Для будущих читателей. Когда доступно еще меньше контекста: RequestCycle.get().find(AjaxRequestTarget.class) - person Rafael Winterhalter; 08.01.2014
comment
Как его получить в Wicket версии 8? Это не то же самое, потому что, когда я обновляю зависимости до версии 8, он говорит, что что-то не так, но в документации определение метода поиска такое же. - person tomrlh; 23.02.2018