[ Pobierz całość w formacie PDF ]
pozosta by niezmieniony przy okazji przej cia u ytkownika ze strony /index.xhtml na stron
/success.xhtml. Przekierowanie powoduje, e przegl darka wy wietla nowy adres URL
(localhost:8080/javaquiz/faces/success.xhtml).
Je li nie stosujemy regu nawigacji, powinni my uzupe ni a cuch wyniku o nast puj cy zapis:
?faces-redirect=true
Po wprowadzeniu tej zmiany przyk adowy a cuch wyniku mo e mie nast puj c posta :
W regule nawigacji nale y umie ci element redirect bezpo rednio za elementem to-view-id:
success
/success.xhtml
94 JavaServer Faces
Rysunek 3.7. Przekierowanie aktualizuj ce adres URL w przegl darce
Przekierowanie i obiekt flash
Aby zminimalizowa rozmiary zasi gu sesji, warto mo liwie cz sto rezygnowa z tego zasi gu
na rzecz zasi gu dania. Bez elementu redirect istnieje mo liwo stosowania komponen-
tów o zasi gu dania dla danych prezentowanych w nast pnym widoku.
Przeanalizujmy teraz, jak b dzie dzia a a nasza aplikacja w przypadku u ycia elementu
redirect:
1. Klient wysy a danie na serwer.
2. Mapa zasi gu dania jest wype niana komponentami o zasi gu dania.
3. Serwer wysy a do klienta status HTTP 302 (przekierowanie tymczasowe) wraz
z miejscem docelowym przekierowania. Ten krok ko czy bie ce danie, zatem
komponenty o zasi gu dania s usuwane.
4. Klient generuje danie GET i wysy a pod nowy adres.
5. Serwer wizualizuje nast pny widok. Okazuje si jednak, e komponenty nale ce
do zasi gu poprzedniego dania nie s ju dost pne.
Aby obej ten problem, technologia JSF 2.0 oferuje obiekt flash, który mo na wype ni
podczas obs ugi jednego dania i u y w ramach kolejnego dania. (Koncepcj obiektu flash
Rozdzia 3. Nawigacja 95
zaczerpni to z frameworku internetowego Ruby on Rails). Typowym zastosowaniem obiektów
flash s komunikaty. Na przyk ad metoda obs uguj ca przycisk mo e umie ci jaki komu-
nikat w a nie w obiekcie flash:
ExternalContext.getFlash().put("message", "Twoje has o nied ugo straci wa no ");
Metoda ExternalContext.getFlash() zwraca obiekt klasy Flash implementuj cej interfejs
Map.
W kodzie strony JSF mo na odwo a si do obiektu flash za pomoc zmiennej flash. Na
przyk ad powy szy komunikat mo na wy wietli , stosuj c konstrukcj :
#{flash.message}
Po wizualizacji komunikatu i dostarczeniu przekierowania do klienta a cuch komunikatu jest
automatycznie usuwany z obiektu flash.
Okazuje si , e warto w obiekcie flash mo na utrzymywa d u ej ni podczas przetwarza-
nia jednego dania. Na przyk ad wyra enie w postaci:
#{flash.keep.message}
nie tylko zwraca warto klucza message przechowywan w obiekcie flash, ale te dodaje t
warto ponownie z my l o kolejnym cyklu dania.
Je li z czasem ilo danych przerzucanych pomi dzy obiektem flash a kompo-
nentem staje si naprawd du a, warto rozwa y u ycie zasi gu konwersacji.
Nawigacja zgodna ze stylem REST i adresy URL
zapewniaj ce mo liwo stosowania zak adek
Aplikacja JSF domy lnie generuje sekwencj da POST wysy anych na serwer. Ka de da-
nie POST zawiera dane formularza. Takie rozwi zanie jest uzasadnione w przypadku aplikacji
gromadz cych du ilo danych wej ciowych wpisywanych przez u ytkownika. Okazuje si
jednak, e znaczna cz aplikacji internetowych dzia a w zupe nie inny sposób. Wyobra my
sobie na przyk ad sytuacj , w której u ytkownik przegl da katalog sklepu internetowego,
klikaj c cza do kolejnych produktów. Poza wyborem klikanych czy trudno w tym przy-
padku mówi o jakichkolwiek danych wej ciowych u ytkownika. cza powinny zapew-
nia mo liwo stosowania zak adek (ang. bookmarkable), aby u ytkownik móg wróci
na t sam stron po wpisaniu tego samego adresu URL. Co wi cej, strony powinny by przy-
stosowane do przechowywania w pami ci podr cznej (ang. cacheable). Przechowywanie
stron w pami ci podr cznej jest wa nym czynnikiem decyduj cym o efektywno ci aplikacji
internetowych. Stosowanie zak adek ani przechowywanie w pami ci podr cznej oczywi cie
nie jest mo liwe w przypadku da POST.
Zgodnie z zaleceniami stylu architektury nazwanego REST (od ang. Representational State
Transfer) aplikacje internetowe powinny pos ugiwa si protoko em HTTP wed ug oryginalnych
96 JavaServer Faces
regu przyj tych przez jego twórców. Na potrzeby operacji wyszukiwania nale y stosowa
dania GET. dania PUT, POST i DELETE powinny by wykorzystywane odpowiednio do two-
[ Pobierz całość w formacie PDF ]