В чем проблема :
Что происходит, когда вы нажимаете кнопку "Назад" в браузере -> открывается страница, бин, управляемый областью просмотра, уже уничтожен -> отправьте запрос от commandButton из этого страница с выборками записей сетки?
Чего я ожидаю :
Связанный viewcope-managebean воссоздается, получает выборки записей сетки и обрабатывает их, как если бы браузер вернулся кнопка никогда не задействована.
Что я испытал :
Связанный viewcope-managebean НЕ создается заново, не получает выборки-записи-сетки. Необходимо повторно ввести URL-адрес или F5 после нажатия кнопки возврата в браузере, чтобы он снова работал правильно.
Итак, вот сценарий успеха , все bean-компоненты являются bean-компонентами с областью просмотра:
- GET page1.xhtml -> page1Bean создан, запрашивает данные и т. Д. В @PostConstruct
- проверьте / выберите несколько записей из данных, нажмите кнопку процесса
- . Метод процесса page1Bean сохраняет выбранные записи во флэш-объекте и перенаправляет на page2.xhtml
- page1Bean уничтожен, page2Bean создан, а в методе прослушивателя preRenderView извлекает выбранные записи из flash, и обработайте их
- нажмите кнопку «перейти на главную страницу», чтобы перенаправить на page1.xhtml, и page2Bean уничтожен, page1Bean создан снова
- цикл с номеров 2–5 все еще возможен
Теперь, это ошибочный сценарий , связанный с кнопкой возврата в браузере (начиная с №6 происходят разные вещи):
- GET page1.xhtml -> page1Bean создан, запрашивает данные и т. д. в @PostConstruct
- , проверьте / выберите несколько записей из таблицы данных, нажмите кнопку процесса
- . Метод процесса page1Bean сохраняет выбранные записи во флэш-объекте и перенаправляет на страницу page2 .xhtml
- page1Bean уничтожен, page2Bean создан, и в методе прослушивателя preRenderView извлекает выбранные записи из flash-объекта и обрабатывает их
- нажмите кнопку возврата в браузере. page2Bean не уничтожается, page1Bean не создается
- проверьте / выберите несколько записей из таблицы данных, нажмите кнопку процесса
- , метод page1Bean выполняет (странно, потому что page1Bean должен был быть уничтожен), но не может видеть выбранные записи и перенаправляет на page2.xhtml
- ] page1Bean не уничтожается (нет вывода журнала), page2Bean не создается (так как он не был уничтожен), выполняет прослушиватель preRenderView как обычно, но на этот раз нет выбранных записей во флеш-объекте
Возможно ли наличие нормальный опыт (как будто без кнопки возврата в браузере) с помощью viewscope-beans с кнопкой возврата в браузере?
Вот моя зависимость:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.3</version>
<scope>compile</scope>
</dependency>
Пожалуйста, поделитесь своими идеями!
задан bertie 9 November 2011 в 08:40
поделиться