У меня есть приложение JSF 2.0, которое используется для создания учетных записей с помощью самостоятельной регистрации. На первой странице есть такие поля, как имя, электронная почта, uid и т. д. Типично для любой регистрации, мы показываем страницу подтверждения (другие настраиваемые страницы между ними) и окончательную страницу успеха. Каждая страница отображается в JSF с использованием Faces-redirect=true, поэтому во всем процессе есть 3-4 страницы (фейслеты). В этом приложении я использую компонент поддержки SessionScoped для отображения промежуточных страниц/страницы подтверждения/конечной страницы и т. д. После завершения регистрации я удаляю компонент SessionScope из сеанса и аннулирую сеанс.
Проблема заключается в следующем: на странице подтверждения/средней странице и т. д. отображаются сведения о пользователе, введенные пользователем с первой страницы (с использованием EL из вспомогательного компонента: #sessionBean.firstName и т. д.). Итак, если Пользователь вводит этот URL-адрес напрямую в браузере (host/appName/confirmationPage.xhtml), страница загружается с пустыми значениями (поскольку Пользователь не перешел на первую страницу напрямую). Кроме того, после завершения регистрации, если пользователь нажимает кнопку «Назад», отображаются пустые значения (без кеша явно задано в классе фильтра, поэтому кеш здесь не используется, что является правильным поведением)
Как заставить пользователя перейти на первую страницу, если имя firstName и т. д. отсутствует. то есть, когда Пользователь попадает на страницу, убедитесь, что Пользователь попал на эту страницу только через первую страницу в этом сеансе?
Следует ли использовать класс фильтра? Или следует использовать событие prerenderview для проверки пустых значений и перенаправления их на первую страницу? Здесь нет «Входа пользователя», так как нет аутентификации. Я считаю, что это распространенный вариант использования, и я хотел бы знать, есть ли какая-либо передовая практика в JSF.