браузер назад + компоненты viewcope

В чем проблема : Что происходит, когда вы нажимаете кнопку "Назад" в браузере -> открывается страница, бин, управляемый областью просмотра, уже уничтожен -> отправьте запрос от commandButton из этого страница с выборками записей сетки?

Чего я ожидаю : Связанный viewcope-managebean воссоздается, получает выборки записей сетки и обрабатывает их, как если бы браузер вернулся кнопка никогда не задействована.

Что я испытал : Связанный viewcope-managebean НЕ создается заново, не получает выборки-записи-сетки. Необходимо повторно ввести URL-адрес или F5 после нажатия кнопки возврата в браузере, чтобы он снова работал правильно.

Итак, вот сценарий успеха , все bean-компоненты являются bean-компонентами с областью просмотра:

  1. GET page1.xhtml -> page1Bean создан, запрашивает данные и т. Д. В @PostConstruct
  2. проверьте / выберите несколько записей из данных, нажмите кнопку процесса
  3. . Метод процесса page1Bean сохраняет выбранные записи во флэш-объекте и перенаправляет на page2.xhtml
  4. page1Bean уничтожен, page2Bean создан, а в методе прослушивателя preRenderView извлекает выбранные записи из flash, и обработайте их
  5. нажмите кнопку «перейти на главную страницу», чтобы перенаправить на page1.xhtml, и page2Bean уничтожен, page1Bean создан снова
  6. цикл с номеров 2–5 все еще возможен

Теперь, это ошибочный сценарий , связанный с кнопкой возврата в браузере (начиная с №6 происходят разные вещи):

  1. GET page1.xhtml -> page1Bean создан, запрашивает данные и т. д. в @PostConstruct
  2. , проверьте / выберите несколько записей из таблицы данных, нажмите кнопку процесса
  3. . Метод процесса page1Bean сохраняет выбранные записи во флэш-объекте и перенаправляет на страницу page2 .xhtml
  4. page1Bean уничтожен, page2Bean создан, и в методе прослушивателя preRenderView извлекает выбранные записи из flash-объекта и обрабатывает их
  5. нажмите кнопку возврата в браузере. page2Bean не уничтожается, page1Bean не создается
  6. проверьте / выберите несколько записей из таблицы данных, нажмите кнопку процесса
  7. , метод page1Bean выполняет (странно, потому что page1Bean должен был быть уничтожен), но не может видеть выбранные записи и перенаправляет на page2.xhtml
  8. ] page1Bean не уничтожается (нет вывода журнала), page2Bean не создается (так как он не был уничтожен), выполняет прослушиватель preRenderView как обычно, но на этот раз нет выбранных записей во флеш-объекте

Возможно ли наличие нормальный опыт (как будто без кнопки возврата в браузере) с помощью viewscope-beans с кнопкой возврата в браузере?

Вот моя зависимость:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.faces</artifactId>
    <version>2.1.3</version>
    <scope>compile</scope>
</dependency>

Пожалуйста, поделитесь своими идеями!

12
задан bertie 9 November 2011 в 08:40
поделиться