Проблема в том, что ваше приложение кэширует данные в модели. В терминологии Уикета это называется моделью 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();
}
}));
здесь Label отображает текущее настроение человека при каждом отображении этого ярлыка / страницы.
PageId в URL сообщает Wicket, какую страницу с состоянием нужно искать и загружать из хранилища страниц. Только страницы с состоянием имеют такой идентификатор. Если вы хотите избавиться от этого, то вы должны использовать только компоненты без поведения и поведение на своей странице. Существует модуль wicket-devutils
, который предоставляет StatelessChecker
, чтобы помочь вам определить причину, когда страница случайно становится с состоянием.
В вашем случае я не уверен, какое решение было бы проще - переделать Модели или сделать страницу без сохранения состояния. Обычно первое легче.
Вы хотите preserve
.
%pre
= preserve "I like\n Cheese"