Obsah
Již víme, že primárním cílem JSF frameworku je usnadnit tvorbu uživatelského rozhraní. To je v převážné většině aplikací sestaveno ze standardních komponent, jako jsou tlačítka, textová pole, checkboxy, comboboxy atp. V JSF se tyto komponenty vkládají na stránku pomocí 25 tagů z knihovny HTML component tag library. Jejich výčet najdete v příloze C. V této kapitole se nejprve seznámíme se základními principy komponent, dále si vysvětlíme způsob jejich renderování a nakonec si uděláme přehled základních skupin komponent včetně jejich krátké charakteristiky.
Samozřejmě zde nebude prostor, abychom se podrobně zabývali funkcionalitou a možnostmi všech komponent. Proto vás budu průběžně odkazovat na externí zdroje. Již nyní vám mohu doporučit [10], kde najdete podrobné informace o každém tagu.
Každá UI komponenta v JSF má dvě stránky - funkcionalitu a vzhled. Funkcionalita
komponent je definována třídami zvanými UI component classes. Jsou v nich
implementovány funkce jako např. udržování stavu mezi požadavky, reakce na události,
řízení konverze a validace atp. Tyto třídy přitom vůbec neřeší, jak bude komponenta
vyobrazena na koncovém zařízení. Jejich prezentaci mají na starost třídy zvané
renderery (viz následující
sekci). Následuje výčet a stručný popis všech tříd UI komponent, které
naleznete v referenční implementaci JSF v balíčku
javax.faces.component
.[28]
UIColumn
- sloupec v tabulce, zpravidla se
vyskytuje uvnitř UIData
komponenty.
UICommand
- komponenta, která spouští akci.
UIData
- tabulka uspořádaných dat, spolupracuje s
instancí třídy DataModel
.
UIForm
- formulář obsahující vstupní pole a
potvrzovací tlačítko.
UIGraphic
- obrázek.
UIInput
- přijímání vstupu od uživatele.
UIMessage
- zpráva pro uživatele.
UIMessages
- skupina zpráv pro uživatele.
UIOutput
- výstup dat na stránce.
UIPanel
- řídí rozložení komponent na
stránce.
UIParametr
- udává parametr v rámci svého
rodiče.
UISelectBoolean
- dává uživateli možnost binární
volby (ano/ne).
UISelectItem
- může se vyskytovat uvnitř
UISelectMany
nebo
UISelectOne
, představuje položku seznamu.
UISelectItems
- stejné jako
UISelectItem
, představuje však celou sadu
položek.
UISelectMany
- dává uživateli možnost vybrat
současně několik položek z množiny.
UISelectOne
- dává uživateli možnost vybrat právě
jednu položku z množiny.
UIViewRoot
- kořen pomyslného stromu
komponent.
Všechny tyto třídy jsou potomky abstraktní třídy
UIComponentBase
, která definuje základní charakteristiky
společné pro všechny komponenty. V referenční implementaci JSF najdeme povětšinou
jednoduché standardní komponenty, které jsou potřeba snad ve všech aplikacích, např.
buttony, vstupní pole, checkboxy, radiobuttony atd.
Pokud však někdy budete potřebovat trochu složitější nebo specifickou komponentu,
vězte, že všechny třídy komponent jsou rozšiřitelné jako každá jiná javovská třída.
Můžete si tak naprogramovat libovolnou komponentu dle vašich potřeb. Jistě existuje
také mnoho složitějších komponent, které již byly implementovány někým jiným, a jsou
volně dostupné na Internetu. Jako příklad můžeme uvést komponentu kalendáře, která
není obsažena v referenční implementaci a může se vám mnohdy hodit. Naleznete ji
třeba na stránce http://www.metacube.net/jsf/calendar
.
Tvorba vlastních uživatelských komponent je však bohužel mimo rozsah této práce. Pro bližší informace o tvorbě uživatelských komponent viz např. [3] nebo [5].
Z hlediska týmových rolí jsou podrobné znalosti o UI component třídách užitečné pouze pro roli component author. Page author pak jen vkládá na stránku příslušné JSP tagy, které se na třídy komponent odkazují.