41
www.proskar.pl JavaServer Faces - podstawy Warsztaty PROSKAR

Podstawy java server faces

  • Upload
    proskar

  • View
    278

  • Download
    0

Embed Size (px)

Citation preview

www.proskar.pl

JavaServer Faces - podstawy

Warsztaty PROSKAR

Plan

1. Wstęp

2. Przykładowa aplikacja

3. Przykładowe znaczniki JSF HTML

4. Przykładowe znaczniki JSF Validator

5. Inne znaczniki

6. Zasięg komponentów zarządzanych

7. Podsumowanie

www.proskar.pl 2/41

Wstęp

• Czym jest JSF?

– Framework przeznaczony do implementacji

warstwy widoku aplikacji WWW

– Ułatwiający tworzenie interfejsów

graficznych

– Część standardu JEE

– Korzysta z architektury MVC

www.proskar.pl 3/41

• Udostępnia szereg komponentów graficznych

– Tabele

– Formularze • Pola tekstowe

• Przyciski

• Listy rozwijane

– Panele

– Komponenty obsługujące wyskakujące wiadomości

www.proskar.pl 4/41

• Komponenty zarządzane – Klasy sterujące widokiem

– Powinny wywoływać metody znajdujące się w logice biznesowej aplikacji

– Dwa sposoby tworzenia komponentów • @ManagedBean – przestarzały

• @Named

– Sposoby wstrzykiwania komponentów • @ManagedProperty - przestarzały

• @Inject

www.proskar.pl 5/41

• MVC w JSF

– Kontroler zaszyty w kontenerze

www.proskar.pl 6/41

• Cykl życia aplikacji

Żądanie

Przywrócenie

widoku

Zastosowanie

wartości żądania

Weryfikacja

danych

Wizualizacja

odpowiedzi

Wywołanie

aplikacji

Aktualizacja

wartości

modelu

Odpowiedź

Brak danych

zapytania

Błąd weryfikacji lub konwersji/wizualizacja odpowiedzi

www.proskar.pl 7/41

Przykładowa aplikacja

• Problem – Aplikacja dodająca nowe zamówienie do systemu

– Użytkownik ma mieć możliwość dodania nowego zamówienia, podając dane:

• Nazwa zamówienia

• Numer zamówienia

– Po podaniu danych, użytkownik ma mieć możliwość sprawdzenia wprowadzanych danych

– Gdy użytkownik zatwierdzi transakcje, musi zostać wyświetlona informacja o wyniku operacji

www.proskar.pl 8/41

Formularz dodawania nowego zamówienia

www.proskar.pl 9/41

Strona prezentująca wpisane dane przez użytkownika

www.proskar.pl 10/41

Tworzenie projektu

– File > New Project > Maven > Web Application

– Properties > Frameworks > Add > JavaServer

Faces > OK.

– Build

www.proskar.pl 11/41

Implementacja logiki aplikacji

– New > Java Class

– Implementuje interfejs Serializable

– Adnotacje

• Named – metadana mówiąca, że dana klasa jest

komponentem zarządzanym

• RequestScoped – zasięg komponentu (tym później)

www.proskar.pl 12/41

– Pola klasy

• String name – nazwa zamówienia

– Opatrzona adnotacją @ManagedProperty("#{param.name}")

• Long number – numer zamówienia

– Opatrzona adnotacją @ManagedProperty("#{param.number}")

– Metody

• Proceed – przeniesie użytkownika do strony zatwierdzającej

dana operacje

• AddOrder – metoda dodająca nowe zamówienie i

przenosząca użytkownika na strone informującą o sukcesie

• GetXXX / SetXXX

www.proskar.pl 13/41

Przykładowa implementacja klasy komponentu zarządzanego

www.proskar.pl 14/41

• Adnotacja @ManagedProperty

– Adnotacja wstrzykująca obiekty takie jak

• Instancje klas zarządzanych opatrzonych adnotacja @ManagedBean

– Adnotacja @ManagedBean jest przestarzała, zamiast niej powinno się używać adnotacji @Named (adnotacja @ManagedProperty nie zadziała z komponentami @Named)

• Wartości parametrów żądań HTTP – Użyteczna tylko gdy komponent zarządzany jest zasięgu

żądania. W pozostałych przypadkach parametry należy pobierać z kontekstu (FacesContext).

www.proskar.pl 15/41

Implementacja widoków

– Jakie strony potrzebujemy?

• Stronę z formularzem dodawania

• Stronę prezentująca dane przed zapisem

• Stronę informującą o wyniku zapisu

– New > XHTML

• addOrder.xhtml

• proceed.xhtml

• success.xhtml

www.proskar.pl 16/41

• Reguły nawigacji

– Umożliwiają rozpoznawanie ścieżki do strony

za pomocą unikalnej nazwy

– Konfigurowane w pliku faces-config.xml

– Ułatwiają wybór stron na którą ma zostać

przeniesiony użytkownik

www.proskar.pl 17/41

Konfiguracja reguł nawigacyjnych w pliku faces-config.xml

www.proskar.pl 18/41

• AddOrder.xhtml

www.proskar.pl 19/41

• Proceed.xhtml

www.proskar.pl 20/41

• Success.xhtml

www.proskar.pl 21/41

• Schemat działania aplikacji

addOrder.xhtml proceed.xhtml success.xhtml

AddOrderBean.java

www.proskar.pl 22/41

Przykłady znaczników JSF HTML

• h:inputText – renderuje element html – input.

• h:inputSecret – renderuje element html – input z argumentem „password”

www.proskar.pl 23/41

• h:panelGrid – renderuje tabele gdzie

– Columns – liczba kolumn w tabeli

www.proskar.pl 24/41

• h:SelectOneListBox – generuje liste umożliwiającą wybór pojedynczego elementu

– Value – pole do którego ma zostać przypisana wybrana wartość

– Wewnątrz tego tagu definiuje się elementy do wyboru za pomocą znacznika f:selectItem

www.proskar.pl 25/41

• h:dataTable – znacznik generujący tabele i wypełniający je danymi

– Value – kolekcja danych którymi ma zostać wypełniona tabela

– Var – nazwa która definiować będzie kolejne elementy z kolekcji

www.proskar.pl 26/41

• Przyciski i łącza

– h:commandButton - znacznik renderujący przycisk który po wciśnięciu generuje zapytanie POST. Wywołuje wskazaną logikę znajdującą się w komponentach zarządzanych.

– h:commandLink – znacznik renderujący link który po wciśnięciu generuje zapytanie POST. Wywołuje wskazaną logikę znajdującą się w komponentach zarządzanych.

www.proskar.pl 27/41

– h:button – znacznik renderujący przycisk który po wciśnięciu generuje zapytanie GET

– h:link – znacznik renderujący link który po wciśnięciu generuje zapytanie GET

– h:outputLink – przenosi na wskazana stronę bez wywołania do frameworku JSF

www.proskar.pl 28/41

www.proskar.pl 29/41

Przykłady znaczników JSF Validator

• f:validateLength – waliduje długość ciągu

znakowego

• f:validateLongRange – waliduje zasięg

wartości typu Long

www.proskar.pl 30/41

www.proskar.pl 31/41

• f:validateDoubleRange - waliduje zasięg wartości typu Double

• f:validateRegex – sprawdza czy podana wartość spełnia wymagania nałożone przez regex

• f:validateDoubleRange - waliduje zasięg wartości typu Double

• f:validateRegex – sprawdza czy podana wartość spełnia wymagania nałożone przez regex

• f:validateDoubleRange - waliduje zasięg wartości typu Double

• f:validateRegex – sprawdza czy podana wartość spełnia wymagania nałożone przez regex

Inne znaczniki

• ui:repeat – używany zamiast znaczników

c:forEach lub h:dataTable

www.proskar.pl 32/41

• f:ajax – umożliwia wykonywanie zapytań ajax

– Execute – lista komponentów wykonywanych

podczas przetwarzania zapytania

– Render – lista komponentów wizualizowanych przez

implementacje JSF po zwróceniu odpowiedzi

www.proskar.pl 33/41

Zasięg komponentów

zarządzanych

• Zasięg sesji – session scoped

– Instancja klasy istnieje w systemie przez czas

wygaśnięcia sesji

– Długość sesji można zmieniać w pliku

web.xml

– @SessionScoped

www.proskar.pl 34/41

• Zasięg żądania – request scoped

– Instancja klasy istnieje w systemie tylko na

czas obsługiwania żądania

– Usuwany z pamięci z momentem wysłania

odpowiedzi

– @RequestScoped

www.proskar.pl 35/41

• Zasieg aplikacji – application scoped

– Instancja klasy istnieje w systemie przez cały

czas działania aplikacji

– Dostępny z poziomów wszystkich

egzemplarzy aplikacji

– @ApplicationScoped

www.proskar.pl 36/41

• Zasięg konwersacji – conversaction

scoped

– Obejmuje zbiór wzajemnie powiązanych stron

– Jest elementem standardu CDI a nie JSF

– @ConversationScoped

www.proskar.pl 37/41

• Zasięg widoku – view scoped

– Instancja klasy utrzymywana w czasie

ponownego wyświetlania strony

– @ViewScoped

www.proskar.pl 38/41

• Zasięg przepływu – flow scoped

– Instancja klasy utrzymywana tylko w

przepływie

– Przepływem może być np. proces tworzenia

przelewu bankowego

– @FlowScoped

• Value – nazwa wcześniej skonfigurowanego

przepływu

www.proskar.pl 39/41

Podsumowanie

• Z JSF wszystko jest łatwiejsze!

– Nawigacja pomiędzy stronami

– Tworzenie własnych rozszerzeń

• Za warstwę kontrolera w architekturze

(MVC), nie jest odpowiedzialny

programista

• Wsparcie dla tłumaczenia zawartości

strony

www.proskar.pl 40/41

• Zawiera wiele bibliotek tagów, można je

też tworzyć samemu

• Specjalnie dedykowane biblioteki

– PrimeFaces

– RichFaces

– OmniFaces

– OpenFaces

– Itd..

www.proskar.pl 41/41