Facelets Template Yapısı

Richfaces ve Jsf hakkindaki yazimin devami olarak Facelets sablon yapisi hakkinda kisa kisa bilgiler vermek istedim. Mantik olarak hazirladigimiz tasarimi tek bir sayfa seklinde tutmak ve bu sayfa üzerinde bölgeler olusturmak daha iyidir. Web sitemizdeki her sayfaya sablon kodlarimizi dahil edersek yüzlerce sayfa oldugunda bir degisiklik için 100 sayfayida güncellememiz gerekecek.


Facelets bu noktada template destegi ile bizim yardimimiza kosmakta. Sablon dosyamizda dinamik bölgeler olusturarak, diger sayfalarda yapmamiz gereken sadece bu bölgeleri tanimlamak.


Örnek bir sablon yapisi üzerinden gidersek çok daha iyi olacak.


sablon.xhtml:
<?xml version=’1.0' encoding=’UTF-8' ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:ui=”http://java.sun.com/jsf/facelets”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8? />
<title>Facelets – Template Example</title>
</head>
<body>
<div>
<ui:insert name=”icerik” />
</div>
</body>
</html>

Dinamik bölgeleri tanimlamak için <ui:insert /> bilesenini kullaniyoruz. name parametresi sayfalarimizda kullanirken belirtedegimiz tanimlama ismini belirtiyor. Simdi bu template dosyasini kullanan bir sayfa hazirlayalim.

ana_sayfa.xhtml:
<?xml version=’1.0' encoding=’UTF-8' ?>
<!DOCTYPE composition PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<ui:composition xmlns=”http://www.w3.org/1999/xhtml”
xmlns:ui=”http://java.sun.com/jsf/facelets”
template=”./sablon.xhtml”>

<ui:define name=”icerik”>
Ana Sayfaya Hos Geldiniz ! 
</ui:define>

</ui:composition>


Sayfamizi olustururken öncelikle ui:composition bilesenine parametre olarak hangi sablonu kullanacagimizi belirtiyoruz. Bizim sablon dosyamiz sablon.xhtml oldugu için parametre olarak bu dosyayi giriyoruz. Sonrasinda ise sablonumuzdaki dinamik bölgeleri tanimlayarak içerigimizi olusturuyoruz. Dinamik bölgeleri belirtmek için <ui:define /> bilesenini kullaniyoruz. Parametre olarak gönderdigimiz name sablonda kullandigimiz <ui:insert>‘e parametre olarak gönderdigimiz degeri yaziyoruz.

Bir önceki yazimizda (JSF ve Richfaces) netbeans kullaniyorduk. Netbeans’e facelets destegi kazandirmistik.  Simdi bu facelets destegi kullanarak önce bir sablon dosyasi ve sonrasinda bu dosyayi kullanan bir sayfa hazirlayalim. Projemize Sag tiklayip  New->Order seçenegini seçiyoruz. Categories bölümünden JavaServerFaces, File Types bölümünden ise Facelets Tepmlate‘i seçip next butonuna basiyoruz.

facelets_template_yapisi_1

Daha sonra karsimiza çikan pencerede template dosyamiza bir isim vermemiz isteniliyor.  Bir isim verdikten sonra bizim için daha önceden hazirlanmis layoutlar mevcut. Bunlardan herhangi bir tanesini seçiyoruz. Layout seklini css  mi yoksa table kullanakarak mi vermek istedigimizi soruyor. Biz web standartlarina bagli kalarak css diyoruz tabiki 

facelets_template_yapisi_2

Finish butonuna basınca şablon dosyamız bizim için otomatik olarak üretiliyor.

facelets_template_yapisi_3

Simdi bu template dosyasini kullanan bir sayfa olusturalim. Bunun için gene projemize sag tiklayip  New->Other seçiyoruz. Buradan Categories bölümünden JavaServer Faces , FileTypes bölümünden de Facelets Template Client seçenegini seçerek next butonuna basiyoruz.

facelets_template_yapisi_4

2. adimda çikan pencerede ise sayfamiza bir isim vermemiz isteniliyor. Ismi verdikten sonra  bir tane de template seçmemiz isteniyor. Template karsisindaki browse butonuna tiklayarak biraz önce olusturdugumuz sablon.xhtml dosyasini seçiyoruz. Sablonu seçtikten sonra Genereted Root tag kisminda html mi <ui:composition> ‘mi kullanmak istedigimiz soruluyor. Burada <ui:composition> seçerekten finish diyoruz .

facelets_template_yapisi_5

Otomatik olarak sablon dosyamizdaki dinamik bölgelere bakaraktan sayfamiz olusturuldu    Her sey bu kadar basit.  Template sistemi bizi bir çok yükten kurtardigi gibi projemize de dinamik bir templating yapisi sunmakta.

Kamil Örs
Software Developer 






0.0103390216827 | 3.5