Ответ 1
Чтобы начать, область просмотра привязана к определенной странице/представлению. Множественные представления не будут иметь одинаковую область видимости bean. Область просмотра начинается с первоначального запроса GET и останавливается, когда действие POST перемещается с возвратным значением не null
.
В общем, существуют следующие сценарии, в зависимости от того, указывается ли браузеру кэширование страницы или нет, и конфигурацию сохранения состояния JSF. Я предполагаю, что навигация между этими страницами произошла по запросу POST (так как это похоже на сценарий "Мастер" ).
При нажатии кнопки "Назад":
- Если браузеру поручено сохранить страницу в кеше, браузер загрузит страницу из кеша. Все ранее введенные входные значения снова появятся из кеша браузера (таким образом, не из области видимости bean на стороне сервера!). Поведение при выполнении запроса POST на этой странице зависит от настройки конфигурации
javax.faces.STATE_SAVING_METHOD
:- Если установлено значение
server
(по умолчанию), тогда произойдет событиеViewExpiredException
, так как состояние просмотра будет стерто на стороне сервера сразу после навигации POST с одной на другую. - Если установлено значение
client
, он будет работать, потому что все состояние просмотра содержится в скрытом поле ввода формы.
- Если установлено значение
- Или, если браузеру поручено не сохранять страницу в кеше, тогда браузер отобразит страницу ошибки "Страница с истекшим сроком действия браузера". Только когда для навигации был применен шаблон POST-redirect-GET, браузер отправит новый GET-запрос по тому же URL-адресу, что и URL-адрес переадресации. Все ранее введенные входные значения будут по умолчанию очищаться (поскольку воссоздан вид bean), но если в браузере включена функция автозаполнения (настраивается на уровне браузера), то она, возможно, будет автозаполнять входы. Это невозможно отключить, добавив атрибут
autocomplete="off"
к входным компонентам. Когда вы выполняете запрос POST на этой странице, он будет работать независимо от способа сохранения состояния JSF.
Легче выполнить сценарий "Мастер" на одном представлении, который содержит условно визуализированные шаги и предлагает кнопку "Назад" в самой секции мастера.