Kapitola 4. UI komponenty

Obsah

4.1. Základní principy UI komponent modelu
4.2. Renderování UI komponent
4.3. Použití UI komponent na stránce
4.3.1. Základní atributy tagů
4.3.2. Formuláře
4.3.3. Textové prvky
4.3.4. Tlačítka a odkazy
4.3.5. Selekce
4.3.6. Zprávy
4.3.7. Panely
4.3.8. Ostatní
4.4. Příklad k procvičení

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.

4.1. Základní principy UI komponent modelu

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í.



[28] Pro bližší informace o třídách UI komponent viz [6].

Creative Commons License
Uvedená práce (dílo), jejímž autorem je Bc. David Hanel, podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Zachovejte licenci 3.0 Česko.