Szablony (templates)

Maciej Piwowski
20.08.2015

W SEAMie ważne miejsce zajmuje JSF i RichFaces. Dzieki temu można korzystać z jednej, bardzo potężnej broni przy projektowaniu strony: szablonów (templates). Szablony umożliwiają zastosowanie tego samego kodu wizualnego w wielu różnych miejscach naraz. Wszelkie poprawki wprowadzone do szablonu będą widoczne wszędzie tam, gdzie ten szablon zastosowano.

Przykładowo, zapewnie w twojej aplikacji będzie wiele stron z tabelami. Gdybyś chciał wprowadzić nową możliwość do nich (np. przeskakiwanie do wybranej strony tabeli), bez szablonów musiałbyć poprawiać po kolei ręcznie każda tabelę w aplikacji. Jest to zbyteczny nadmiar niepotrzebnej roboty.

Szablony są także wykorzystywane przez SEAMA i generatora (przykładowo view/layout/menu.xhtml czy view/layout/edit.xhtml). Jest także mozliwe stosowanie szablonu w szablonie.

A więc, jak użyć szablonu? Szablon zapisuje się w osobnym pliku xhtml na ścieżce view/layout. Jako przykładu użyjemy szablonu, który będzie wstawiać tekst do panelu oraz miał jako parametr tytuł panelu. Tak, oczywiście mozna od razu użyć panelu, ale to ma być jedynie prosty przykład użycia. :)

Oto zawartość pliku template_panel.xml:

  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:rich="http://richfaces.org/rich">

   
       
       
   

 

Tag wstawia do szablonu pożądane elementy. Można mieć kilka rzeczy do wstawienia, rozróżniamy wtedy je po name. A jak użyć szablonu na właściwej stronie? Można użyć dwojako.

1. Na osobnej podstronie, którą później się włączy w główną stronę:

  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:s="http://jboss.com/products/seam/taglib"
  template="../layout/template_panelxhtml">

 
 
  Treść panelu

 

2. Albo też wprost na stronie:

...
 
   
   
    Treść panelu
 

...

Przede wszystkim należy zwrócić uwagę na atrybut template w tagu lub . Informuje on o tym, jaki szablon zastosować.

Tag umożliwia tworzenie parametrów. Nic nie stoi na przeszkodzie, by użyć EL. Po stronie wzorca, parametry używa się poprzez EL: #{nazwa_parametru}.

Za pomocą tagu można "wklejać" do szablonu dowolne dane, w tym inne tagi RichFaces. Każdy o podanej nazwie odpowiada o tej samej nazwie w szablonie. Można też zastosować jedną parę define/insert bez name.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie