Jak poruszać się w JSF? Jak zrobić adres URL odzwierciedlający bieżącą stronę (a nie poprzednią)

Obecnie uczę się JSF i byłem zdumiony i zdziwiony, gdy zdałem sobie z tego sprawę, kiedy używamy<h:form>, standardowym zachowaniem JSF jest zawsze pokazywanie mi adresu URLpoprzedni strona w przeglądarce, w przeciwieństwie do adresu URL stronyobecny strona.

Rozumiem, że ma to związek ze sposobem, w jaki JSF zawsze publikuje formularz na tej samej stronie, a następnie renderuje dowolną stronę, którą sterownik przekazuje z powrotem do przeglądarki, która nie wie, że lokalizacja strony uległa zmianie.

Wygląda na to, że JSF istnieje już od dawna, a więc musi istnieć czysty, solidny sposób radzenia sobie z tym. Jeśli tak, czy mógłbyś się podzielić?

Znalazłem różne rozwiązania, ale niestety nic, co wydaje się prawdziwym solidnym rozwiązaniem.

Po prostu zaakceptuj, że adres URL wprowadza w błąd.Dodać"?faces-redirect=true" do wartości zwracanejkażdy działanie fasoli, a następniedowiedzieć się, jak wymienić@RequestScoped z czymś innym (Flash Scopes, konwersacja CDI, @SessionScoped, ...).zaakceptuj posiadanie dwóch obiegów HTTP dla każdej akcji użytkownika.Użyj jakiejś metody (np. Biblioteki innej firmy lub kodu niestandardowego), aby ukryć nazwę strony w adresie URL, zawsze używając tego samego ogólnego adresu URL dla każdej strony.

Jeśli"?faces-redirect=true" jest tak dobry, jak tylko się da, czy istnieje sposób, aby skonfigurować całą aplikację do traktowania wszystkich żądań w ten sposób?

questionAnswers(1)

yourAnswerToTheQuestion