2017-02-22 73 views
0

Рассмотрите страницу, подкатегории WebPage. Его конструктор создает и добавляет WebMarkupContainer, который содержит компонент ListView при поддержке LoadableDetachableModel.Список списков страницы Wicket LoadableDetachableModel изменяется с помощью вызова AJAX. Страница не перерисовывает

На странице также добавлены два экземпляра анонимных подклассов AbstractDefaultAjaxBehavior [каждый из которых переопределяет класс renderHead и respond методов].

Соответствующий HTML содержит <div> связаны wicket:id к WMC и через <table> с <tr> «s, связанным с ListView компонентом ListItems.

Эта страница отображается правильно в первый раз.

На основе взаимодействия пользователя с клиентом в задаче AbstractDefaultAjaxBehavior задается информация о модельном объекте модели. Эта информация предназначена для изменения способа отображения конкретного listitem в виде строки <td> в строке в таблице - в частности, текст выделенной строки должен отображаться жирным шрифтом.

Диагностические отладочные точки останова и System.out информация по обе стороны на вызов AJAX подтвердить, что respond метода поведения вызывается правильно и что объектная модель быть правильно изменено.

Страница никогда не перерисовывается автоматически.Вручную повторная загрузка страницы из браузера демонстрирует правильное поведение.

Я исследовал эту проблему и нашли множество, возможно, связанных с решений, которые я пробовал, в том числе

  • призывающую target.add(webMarkupContainer); из respond метода поведения, в сочетании с

  • , вызывающий target.appendJavaScript("window.location.reload();"); от respond способ.

  • вызова setResponsePage(this);, setResponsePage(Page.class); и setResponsePage(getPage()); от метода respond, а также из переопределен onBeforeRender метода на этой странице.

Любые предложения?

ответ

0

AbstractDefaultAjaxBehavior не обновляет компоненты автоматически.

target.add(webMarkupContainer) help? Если нет, позвоните ли вы webMarkupContainer.setOutputMarkupId(true)?

+0

Я использовал оба варианта, в разных комбинациях, безуспешно. Я последовал за вашим редиректором 'AbstractDefaultAjaxBehavior' и повторил реализацию для проблематичного события как« AjaxEventBehavior », который теперь работает. Спасибо за подсказку - я полагаю, что я пропустил этот полезный бит где-то по пути.Если кто-то не возражает, могут ли они указать мне соответствующую справочную информацию, где описывается не обновляющийся характер абстрактного класса. Еще раз спасибо. –