В настоящее время я изучаю JSF и был удивлен и озадачен, когда понял, что всякий раз, когда мы используем <h:form>
, стандартное поведение JSF всегда показывает мне URL-адрес предыдущей страницы в браузере, в отличие от URL-адреса текущей страницы.
Я понимаю, что это связано с тем, как JSF всегда отправляет форму на одну и ту же страницу, а затем просто отображает любую страницу, которую контроллер возвращает, в браузер, который не знает, как изменилось расположение страницы.
Кажется, что JSF существует уже достаточно долго, чтобы иметь дело с чистым, надежным способом справиться с этим. Если да, не могли бы вы поделиться?
Я нашел различные обходные пути, но, к сожалению, ничего похожего на реальное твердое решение.
- Просто признайте, что URL-адрес вводит в заблуждение.
- Добавить
"?faces-redirect=true"
в возвращаемое значение каждого действия bean, а затем- выяснить, как заменить
@RequestScoped
на что-то еще (Flash Scopes, CDI-разговор, @SessionScoped,...). - согласитесь, что для каждого пользовательского действия есть два маршрута HTTP.
- выяснить, как заменить
- Используйте какой-либо метод (например, стороннюю библиотеку или собственный код), чтобы скрыть имя страницы в URL-адресе, всегда используя один и тот же общий URL-адрес для каждой страницы.
Если "?faces-redirect=true"
так же хорошо, как и получается, существует ли способ настроить все приложение таким образом, чтобы обрабатывать все запросы?