Richfaces ve Jsf hakkındaki yazımın devamı olarak Facelets şablon yapısı hakkında kısa kısa bilgiler vermek istedim. Mantık olarak hazırladığımız tasarımı tek bir sayfa şeklinde tutmak ve bu sayfa üzerinde bölgeler oluşturmak daha iyidir. Web sitemizdeki her sayfaya şablon kodlarımızı dahil edersek yüzlerce sayfa olduğunda bir değişiklik için 100 sayfayıda güncellememiz gerekecek.
Facelets bu noktada template desteği ile bizim yardımımıza koşmakta. Şablon dosyamızda dinamik bölgeler oluşturarak, diğer sayfalarda yapmamız gereken sadece bu bölgeleri tanımlamak.
Örnek bir şablon yapısı üzerinden gidersek çok daha iyi olacak.
<?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 tanımlamak için <ui:insert /> bileşenini kullanıyoruz. name parametresi sayfalarımızda kullanırken belirtedeğimiz tanımlama ismini belirtiyor. Şimdi bu template dosyasını kullanan bir sayfa hazırlayalım.
<?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 Hoş Geldiniz ! ![]()
</ui:define>
</ui:composition>
Sayfamızı oluştururken öncelikle ui:composition bileşenine parametre olarak hangi şablonu kullanacağımızı belirtiyoruz. Bizim şablon dosyamız sablon.xhtml olduğu için parametre olarak bu dosyayı giriyoruz. Sonrasında ise şablonumuzdaki dinamik bölgeleri tanımlayarak içeriğimizi oluşturuyoruz. Dinamik bölgeleri belirtmek için <ui:define /> bileşenini kullanıyoruz. Parametre olarak gönderdiğimiz name şablonda kullandığımız <ui:insert>‘e parametre olarak gönderdiğimiz değeri yazıyoruz.
Bir önceki yazımızda (JSF ve Richfaces) netbeans kullanıyorduk. Netbeans’e facelets desteği kazandırmıştık. Şimdi bu facelets desteği kullanarak önce bir şablon dosyası ve sonrasında bu dosyayı kullanan bir sayfa hazırlayalım. Projemize Sağ tıklayıp New->Order seçeneğini seçiyoruz. Categories bölümünden JavaServerFaces, File Types bölümünden ise Facelets Tepmlate‘i seçip next butonuna basıyoruz.
Daha sonra karşımıza çıkan pencerede template dosyamıza bir isim vermemiz isteniliyor. Bir isim verdikten sonra bizim için daha önceden hazırlanmış layoutlar mevcut. Bunlardan herhangi bir tanesini seçiyoruz. Layout şeklini css mi yoksa table kullanakarak mı vermek istediğimizi soruyor. Biz web standartlarına bağlı kalarak css diyoruz tabiki
Finish butonuna basınca şablon dosyamız bizim için otomatik olarak üretiliyor.
Şimdi bu template dosyasını kullanan bir sayfa oluşturalım. Bunun için gene projemize sağ tıklayıp New->Other seçiyoruz. Buradan Categories bölümünden JavaServer Faces , FileTypes bölümünden de Facelets Template Client seçeneğini seçerek next butonuna basıyoruz.
2. adımda çıkan pencerede ise sayfamıza bir isim vermemiz isteniliyor. İsmi verdikten sonra bir tane de template seçmemiz isteniyor. Template karşısındaki browse butonuna tıklayarak biraz önce oluşturduğumuz sablon.xhtml dosyasını seçiyoruz. Şablonu seçtikten sonra Genereted Root tag kısmında html mi <ui:composition> ‘mı kullanmak istediğimiz soruluyor. Burada <ui:composition> seçerekten finish diyoruz .
Otomatik olarak şablon dosyamızdaki dinamik bölgelere bakaraktan sayfamız oluşturuldu
Her şey bu kadar basit. Template sistemi bizi bir çok yükten kurtardığı gibi projemize de dinamik bir templating yapısı sunmakta.
Bir sonraki yazımda JSF Temel bileşenlerinden bahsedeceğim.
Programlama ve hayata dair yazılar yazdığım bloguma hoş geldiniz.
Adım Kamil. 23 yaşındayım. Yazılım geliştiricisiyim. Selçuk Üni. Bilgisayar Programcılığı
bölümünden mezunum. Açık Öğretim İktisat Fakultesi 3. sınıf öğrencisiyim. Profesyonel hayatımda java ve php tabanlı
yazılımlar geliştirmekteyim. Antalya'da bir turizm firmasında yazılım geliştirme
uzmanı olarak çalışmaktayım.






