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?