JSF Ders30 - Page Template (Sayfa Şablonu)


    Page Template (Sayfa Şablonu), bir sayfaya daha önce oluşturulan sayfa/sayfa içeriğini dahil etmeye yarar.
Örneğin birçok sayfada kullanılan bir arama kutusu, her sayfada tek tek oluşturulmak yerine tek bir sefer oluşturularak bu sayfayı/sayfa içeriğini kullanılacak sayfalara kolayca dahil edilir.
 
Aşağıda bir template (şablon) sayfa oluşturulumu ve onun kullanışı gösterilmiştir.

sablon.xhtml

<!DOCTYPE ...>
<html xmlns="http://www.w3.org/1999/xhtml"
           xmlns:h="http://xmlns.jcp.org/jsf/html"
           xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head> </h:head>

<h:body>

<ui:insert name="d1">default yazı</ui:insert>
<ui:insert name="d2">default yazı2</ui:insert>
<ui:insert name="d3">default yazı3</ui:insert>

</h:body>

</html>




<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                           xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                           template="/templates/sablon.xhtml">

<ui:define name="d1"> test yazisi</ui:define>
<ui:define name="d2"> test yazisi2</ui:define>

</ui:composition>


Çıktı


test yazisi
test yazisi2
default yazı3


Bilinmesi gerekenler
  • Şablon sayfalar için bir klasör oluşturulmalıdır.
  • Sayfa şablon sayfayı template parametresi ile belirtmelidir. template="/templates/sablon.xhtml"
  • Sayfaya içerik tanımlanması ui:define tagıyla, sayfa şablonuna içerik eklenmesi  ui:insert tagıyla sağlanır.
Bir sayfanın tamamı başka bir sayfa dahil edilebilir.

Bu ui:include tagıyla yapılır.


<ui:include src="/te/deneme.xhtml"/>

  1. Tüm kullanıcılara açık içerikler için direkt olarak ui:include tagıyla sayfanın tamamı eklenir.
  2. Sadece tek kişiye açık içerikler için ui:define tagıyla sayfanın tek bir içeriği eklenir.
  3. İçerik bazı kullanıcılara açık olacak ise ui:include tagı ui:define tagı içerisinde tanımlanarak kullanılır.

<ui:define name="d1">
       <ui:include src="/te/deneme.xhtml"/>
</ui:define>


Aşağıda örnek bir program verilmiştir.

test.xhtml (Şablon Sayfa)
<!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:h="http://java.sun.com/jsf/html"
 xmlns:f="http://java.sun.com/jsf/core"
 xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
 <title>test.xhtml</title>
</h:head>

<h:body>

 <ui:insert name="no1">Default Sablon Oge 1</ui:insert>
 <br />
 <ui:insert name="no2">Default Sablon Oge 2</ui:insert>
 <br />
 <ui:insert name="no3">Default Sablon Oge 3</ui:insert>
 <br />
 <ui:insert name="no4">Default Sablon Oge 4</ui:insert>
 <br />

</h:body>


</html>

sayfa4.xhtml
<!DOCTYPE html 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">
 <p style="color: red;">sayfa4</p>
</ui:composition>

index.xhtml
<!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:h="http://xmlns.jcp.org/jsf/html"
 xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head>
<title>index.xhtml</title>
</h:head>
<h:body>
 <ui:composition template="/templates/test.xhtml">
  <ui:define name="no1">Yeni 1 nolu öge</ui:define>

  <ui:define name="no2">Yeni 2 nolu öge</ui:define>

  <ui:define name="no4">
   <ui:include src="/sayfa4.xhtml"></ui:include>
  </ui:define>
 </ui:composition>
</h:body>
</html>

JSF Page Template

Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style