Как отключить управление версиями страниц в Apache Wicket 1.5?setVersioned (false) кажется недостаточно - PullRequest
0 голосов
/ 08 апреля 2019

Мне дали это старое веб-приложение Apache Wicket 1.5.

Все URL-адреса заканчиваются на ?xxx, где xxx - это число.Похоже, это «особенность» Wicket, которая позволяет вам создавать версии / кэшировать ранее показанные веб-страницы.Как бы хорошо это ни звучало, с практической точки зрения это всего лишь головная боль для всех вовлеченных пользователей, поскольку даже если базовые данные, отображаемые на странице, изменяются и пользователь принудительно обновляет страницу, старая, устаревшая страница все равно перезагружается.

Я просмотрел онлайн и в документах Wicket это называется «версиями».

Я пытался отключить его, позвонив по номеру setVersioned(false), но безрезультатно - я не вижу заметной разницы.Кто-нибудь знает, как заставить это работать?

Спасибо

1 Ответ

2 голосов
/ 09 апреля 2019

Проблема в том, что ваше приложение кэширует данные в модели.В терминологии Wicket это называется static модель.

Например:

Person person123 = personService.get(123);

// a static model
page.add(new Label("personMood", new Model(person123.getMood())));

Здесь Метка всегда будет отображать настроение человека во время создания Метки.Человек может изменить свое настроение в следующую секунду, но Метка все равно покажет старое / кэшированное значение.

// a dynamic model
page.add(new Label("personMood", new Model<String>() {
  @Override public String getObject() {
     return person123.getMood();
  }
}));

здесь Метка отразит текущее настроение человекапри каждом отображении этого ярлыка / страницы.

Идентификатор страницы в URL сообщает Wicket, какую сохраняющую состояние страницу следует искать и загружать из хранилища страниц.Только страницы с состоянием имеют такой идентификатор.Если вы хотите избавиться от этого, то вы должны использовать только компоненты без поведения и поведение на своей странице.Существует модуль wicket-devutils, который предоставляет StatelessChecker, чтобы помочь вам определить причину, когда страница случайно становится состоящей из состояний.

В вашем случае я не уверен, какое решение будет проще - переделать модель (и)) или сделать страницу без сохранения состояния.Обычно первый проще.

...