pondělí 21. června 2004

Tiles - opravdu chytré šablony pro JSP

Při tvorbě uživatelského rozhraní webových aplikací jsou vývojáři konfrontování s oddělením aplikační a prezentační logiky. Samotné oddělení prezentační a aplikační logiky je téma tak otřískané, že se jím nebudu v tomto článku zabývat.

Druhým neméně závažným problémem při tvorbě GUI je oddělení vlastního obsahu od jeho uspořádání. Předesílám, že nemám na mysli, prezentační vlastnosti, které nám umožňuje separovat CSS.

Dříve nebo později nastane situace, kdy bude rozvržení stránky tzv. layout nutné změnit. V produkčním nasazení to bývá nejčastěji při specifických požadavcích zákazníka např. na začlenění webové aplikace do portálu či intra/extra netu. V takových případech musíme pohlídnout pravdě do očí a layout změnit.

Ono se to řekne změnit layout, ale představme si co to všechno obnáší? Kromě problémů ryze technických jako paralelního udržování několika verzí GUI, to přináší i přepsání velkého množství prezentačního kódu. Tyto problémy jsou způsobeny mícháním vlastního obsahu s jeho rozvržením, který je tolik typický pro webové aplikace.

Řešení těchto problému je založeno právě na striktním oddělení obsahu a jeho rozvržení, kterého je dosaženo pomocí mechanismu šablon. Co je to vlastně ta šablona? Šablona není nic prostšího než struktura, kterou lze opsat.

V šabloně definujeme vlastní strukturu, kterou může například tvořit rozvržení jednotlivých komponent stránky tedy ovládací prvky, záhlaví, datová část, navigace atd. Šablonu, kterou máme připravenu, všechny stránky opíšou a přidají vlastní obsah např. seznam objednávek.

Pomocí šablon není problém rozebrat a seskládat stránku na atomické části a umožnit změnu rozvržení na jednom místě. Jednotlivé atomické části jsou pak znovupoužitelné v rámci aplikace či aplikací a snižují redundanci kódu.

Když jsem přemýšlel o tomto článku, tak mě intuice vedla k šablonovacímu systému SMARTY, který popisuje Štěpán Kouba v seriálu SMARTY - chytré šablony pro PHP na serveru Interval.cz.

S odstupem času nejsou SMARTY tím pravým zástupcem šablonovacího systému neboť se snaží spíše o oddělení aplikační a prezentační logiky, což je sice základní premisa, ale není to co by nám umožňovalo oddělit rozvržení od obsahu.

Měrou vrchovatou mé očekávání naplnily až Tiles patřící pod MVC framework Struts. "Dlaždice" nabízejí mnohem více možností než jsem popsal, samozřejmá je podpora internacionalizace, definice šablony v XML atd. Pokud hledáte šablonovací systém pro JSP tak by Tiles mohly být tou pravou volbou a pokud váháte tak doporučují přečíst sérii článků Chucka Cavanesse Programming Jakarta Struts: Using Tiles, Part 1.