Как я могу заставить Haml представлять содержание пред тег правильно?

Проблема в том, что ваше приложение кэширует данные в модели. В терминологии Уикета это называется моделью 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, чтобы помочь вам определить причину, когда страница случайно становится с состоянием.

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

8
задан Ethan 24 February 2009 в 20:27
поделиться