CDI / Weld - как обработать обновление страницы браузера после окончания разговора? - PullRequest
5 голосов
/ 21 июня 2011

В первые дни использования CDI я перехожу на страницу с длительным разговор активен с использованием face-redirect = true, поэтому у меня есть URL-адрес, например ..myPage.xhtml? cid = 1.

В какой-то момент я заканчиваю разговор, я имею в виду, что это должно быть разумно или вы могли бы также использовать сессионный объем? Во всяком случае, я заканчиваю разговор, а затем пользователь нажимает F5, и, конечно, это вызывает ошибку «разговор не найден», так как cid = 1 не существует.

Кто-нибудь может подсказать, как обойти эту проблему? Я использую Стивена Ворборга Реализация ViewScoped и простое использование bean-объекта в области диалога для передачи параметров между страницами. Итак, у меня есть, например, 2 бина @ViewScoped, каждый из которых имеет обратную страницу 1 и 2. Я @ Inject @ConversationScoped ParameterBean в обоих bean-объектах видимости. Я начинаю разговор (параметрBean.getConversation (). begin ()) в методе действия, вызванном из страница 1. В событии preRenderView для страницы 2 я беру ссылку на свойства parameterBean в переменную экземпляра бина страницы 2 и завершить диалог, это сделано, это работа и больше не требуется.

За исключением проблемы F5, он работает нормально. Если у кого-то есть предложения, я буду признателен, Надеюсь, я не пропустил что-то действительно очевидное. Я вроде как не получаю от переадресации.

Спасибо.

1 Ответ

4 голосов
/ 21 августа 2011

Обходного пути нет.@ConversationScoped по умолчанию полностью нарушен.Вместо этого я использую @ConversationScoped из CODI MyFaces.Он решает все проблемы, которые вы можете получить с помощью стандартного объема.

...