2016-09-19 5 views
-1

Иногда при закрытии ModalWindow появляется сообщение «Вы хотите уйти или остаться ...». Я не могу определить, почему. Например, я закрываю окно 10x (все так же), и некоторые из этих попыток заканчиваются этим сбоем. Было бы хорошо, но родительская страница будет построена снова, и все данные будут потеряны, что не является удобным для пользователя.wicket modal window error on close

Моей спецификация проекта:

  • Калитка: 6.21.0
  • Java: 8
  • Spring: 4.1.1.RELEASE
  • и другой (я надеюсь, не соответствующие зависимости)

Что я сделал, исследовал до сих пор:

  • когда модальное окно закрывается и происходит ошибка, родительская страница строится снова
  • при возникновении ошибки, не близко обратного вызова не называется
  • modalWindow.showUnloadConfirmation (ложь) - не работает. Окно подтверждения не отображается, но когда окно закрыто, родительская страница перезагружается и данные уходят
  • Обновление калитки до последней версии 6.24 или Spring 4.1.6 не помогает
  • downgrade to wicket 6.1.9 не помогло
  • обновления до 7.4 калитку не помогло
  • когда ошибка нЕ происходит, модальное окно страница, например, порожденным HTTP 8443 Exec 5 потоков и обратного вызов является пойманы в же потоке
  • при возникновении ошибки, модальное окно Page, например, генерируемого HTTP 8443 ехеса нити, но когда не удается, и новый родитель Страница создаются HTTP 8443 ехеса нити, например
  • также не помогут добавить закройте кнопку и перед вызовом window.close(), чтобы очистить и отделить всех dataproviders
  • , когда модальное окно терпит неудачу, метод window.close() в javascript - это последнее, что называется. После этого код не вызывается. После этого возможно перенаправление на родительскую страницу (вот почему вы хотите оставить диалог подтверждения этой страницы).
  • все выше можно протестировать, создав новый Java-класс, который расширяет ModalWindow и переопределяет защищенный метод String getCloseJavacript(), который возвращает закрытый код JavaScript в форме String.

РЕШЕНИЕ

Проблема заключалась в том, когда страница загружена данные материнские, размер страницы был большой, чтобы хранить в памяти кэширования Уикет страницы. Поэтому, когда модальное окно было закрыто, сохраненная родительская страница должна быть загружена, но она никогда не сохранялась, поэтому была создана новая. Размер памяти кэширования страницы Wicket может быть задан в классе WicketApplication. Подробнее на https://ci.apache.org/projects/wicket/guide/6.x/guide/versioningCaching.html в разделе Страница кэширования.

ответ

0

Это настраивается: используйте ModalWindow # showUnloadConfirmation (boolean), чтобы управлять им.

+0

Я попытался увидеть 3-ю пулю. Информационное сообщение не так важно. Я гораздо больше забочусь о том, что родительская страница создается снова. – user2431846

+0

Тогда проблема заключается в вашем коде приложения. Трудно догадаться, что это такое. –