İçerikler :

Component Element (ui:component) Composition Elementi (ui:composition) Decorate Elementi (ui:decorate) Define Elementi (ui:define) Facelet Facelet İle Şablon Yapılması Fragment Element (ui:fragment) Include Elementi (ui:include) Insert Elementi (ui:insert) JSF 2 Facelet'te Basit Bir Repeat Örneği JSF 2 Facelet'te Component ve Fragment Elemen.. JSF 2 Facelet'te Composition , Decorate, Comp.. JSF 2 Facelet'te Composition ve Decorate Aras.. JSF 2 Facelet İle Basit Bir Decorate (Dekoras.. JSF 2 Facelet İle Basit Bir Sayfa Şablon Örne.. Repeat Döngüsünde Index Değerini Öğrenmek Repeat Döngüsünde Index Değerini Öğrenmek Repeat Elementi (ui:repeat) varStatus

Bu Sayfayı Paylaş:

Kavram

Facelet

Tanım: JSF içinde arayüz ile ilgili gelişmiş özellikler sağlayan (şablon, arayüz bileşeni, include vb..) bir "View Handler" teknolojisi. JSF 2.0 sürümünden sonra JSF'nin standart bir parçasıdır

Kavram

Insert Elementi (ui:insert)

Tanım: Facelet'te bir şablon dosyasında bir bölgeyi belirtmek için kullanılan element. Şablonu kullanan sayfalar insert ile tanımlanmış bölgeleri define elementi kullanarak değiştirebilmektedirler

Kavram

Define Elementi (ui:define)

Tanım: Facelet'te şablon kullanan bir sayfada , şablon sayfasında insert ile tanımlanmış bir bölgeyi tanımlamak için kullanılan element. Sayfa gösterilirken define ile tanımlanmış bölge , şablon dosyasında insert ile tanımlanmış bölgenin yerinde gösterilir

Kavram

Composition Elementi (ui:composition)

Tanım: Facelet'te bir şablona uygun sayfa tasarlamak için kullanılan element. Element kullanılırken hangi şablonun kullanacağı bilgisi verilmektedir

Kavram

Decorate Elementi (ui:decorate)

Tanım: Facelet'te tekrar kullanılabilir şablon yaratmak için kullanılan element. Composition ile benzer şekilde çalışır ancak composition tek bir sayfanın şablonu için kullanılırken , decorate aynı sayfada birden çok kez kullanılabilir

Kavram

Include Elementi (ui:include)

Tanım: Facelet'te bir sayfa içine başka bir sayfayı (.xhtml uzantılı başka bir dosyayı) eklemek (include etmek) için kullanılan element. JSP'deki jsp:include elementine benzemektedir

Kavram

Component Element (ui:component)

Tanım: Facelet'te bileşen ağacına (component tree) yeni bir bileşen (UI Component) eklemek amacıyla kullanılan element. ui:component ile eklenen bileşen dışında kalan kodlar render edilmemektedir ve bütün bileşenler ui:component içinde olmalıdır. ui:component elementinin "binding" özelliğine managed bean sınıfında bir property atanabilir

Kavram

Fragment Element (ui:fragment)

Tanım: Facelet'te bileşen ağacına (component tree) yeni bir bileşen (UI Component) eklemek amacıyla kullanılan element. ui:component'ten farklı olarak aynı döküman içinde birden fazla kullanılabilir. ui:fragment elementinin "binding" özelliğine managed bean sınıfında bir property atanabilir

Kavram

Repeat Elementi (ui:repeat)

Tanım: Bir yapıyı bir döngü içerisinde liste elemanları kadar tekrar edilmesini sağlayan element

Veri

Facelet İle Şablon Yapılması

Facelet ile bir şablon yapılması ve o şablondan birden fazla sayfa üretilmesi mümkündür. Facelet'te şablon yapılması için normal bir XHTML sayfası yapılması ve boş olarak tanımlanan (şablonu kullanacak olan sayfanın girmesi gerektiği bölge) bölgeler ui:insert elementi ile işaretlenmesi gerekir. Örneğin aşağıda bir şablon gözükmektedir : 

<!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:ui="http://java.sun.com/jsf/facelets">
<title>Sablon Test</title>
<body>
	Burasi Sablon
        <ui:insert name="Body" />
</body> 
</html>

Yukarıdaki normal sayfadan tek farkı ui:insert elementinin eklenmiş olmasıdır. Yukarıdaki şablon bir sayfada aşağıdaki gibi kullanılabilir : 

<ui:composition template="/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:define name="Body">
        <h1>Body Content</h1>           
</ui:define>
</ui:composition>

Şablon kullanmak isteyen bir sayfa ui:composition ile başlaması gerekmektedir. Bu element ile birlikte verilen şablonun path'i template="" şeklinde verilir. Şablonda belirtilen (insert elementi ile) bölgelere ui:define ile elementi set edilirler. Yukarıdaki örnekte görüldüğü gibi Body ile tanımlanmış insert elementinin yerine <h1> Body Content </h1> içeriği eklenmiştir. Sayfa gösterildiği zaman şablon sayfası yüklenecek ve Body olarak tanımlanan bölgesine <h1> Body Content </h1> içeriği yerleştirilecektir. 

 

 

 


Veri

JSF 2 Facelet'te Composition ve Decorate Arasındaki Fark

JSF 2'de Facelet'te Composition (ui:composition) ve Decorate (ui:decorate) elementleri şablon yaratmak amacıyla benzer şeklinde kullanılır. Ancak Composition tek bir sayfanın şablonu içindir ve ui:composition dışında kalan kodlar sayfa render edilirken dikkate alınmaz. Decorate ise aynı sayfada birden fazla kullanılabilmektedir. Sonuç olarak Composition sayfanın ana yapısının şablonu için, Decorate ise sayfa içinde tekrarlanan bölümlerin şablonu içindedir


Veri

JSF 2 Facelet'te Component ve Fragment Elementleri Arasındaki Fark

JSF 2'de Facelet'te Component (ui:component) ve Fragment (ui:fragment) elementleri  bileşen ağacına (component tree) yeni bir bileşen (component) eklemek için kullanılmaktadır. Component sayfada sadece bir kere kullanılabilir ve dışındaki elementler dikkate alınmamaktadır. Fragment'da ise aynı sayfa içinde birden fazla kullanılabilmektedir


Veri

JSF 2 Facelet'te Composition , Decorate, Component, Fragment Elementleri Farkları

JSF 2 Facelet'te kullanılan temel dört elementin (Composition , Decorate, Component, Fragment) farkları aşağıdaki gibi özetlenebilir :

  • Composition ve Decorate bir dosyada yaratılan şablonun sayfaya uygulanması için kullanılırken , Component ve Fragment sayfanın bileşen ağacına (component tree) yeni bir bileşen eklemek için kullanılmaktadır
  • Composition ve Decorate şablon gerekli olmasından dolayı template property'si bulunmalıdır , Component ve Fragment'da ise template property'si bulunmaz ve eğer istenir ise binding özelliği ile bir managed bean property'sine eşleştirme yapılabilir
  • Composition ve Component bir sayfada sadece bir kere kullanılabilir ve element dışında kullanılan elementler dikkate alınmaz. Decorate ve Fragment ise aynı sayfada birden çok kullanılabilirler


Örnek

JSF 2 Facelet İle Basit Bir Sayfa Şablon Örneği

JSF 2'de Facelet ile en basit şablon örneği aşağıdaki gibi yapılabilir : 

Şablon İçeriği (template.xhtml olarak kaydediyoruz) : 

<!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:ui="http://java.sun.com/jsf/facelets">
<title>Sablon Test</title>
<body>
	Burasi Sablon
        <ui:insert name="Body" />
</body> 
</html>

Yukarıda şablonun değişecek bölümü ui:insert ile adı "Body" olarak verilmiştir. Bu şablona uygun bir sayfa aşağıdaki gibidir : 

<ui:composition template="/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:define name="Body">
        <h1>Body Content</h1>           
</ui:define>
</ui:composition>

Bir şablon kullanmak için ui:composition elementi kullanılmakta ve template (şablon) olarak bir üsteki şablon dosyasının path'i verilmiştir. Bu şekilde şablonu seçtikten sonra şablondaki Body alanını ui:define ile <h1> elementi ekliyoruz. Yukarıdaki sayfa çalıştırıldığı zaman şablon sayfası çalıştırılacak ve body içerisine <h1>Body Content</h1> eklenecektir. Yukarıdaki template.xhtml sayfası başka sayfalarda da kullanılabilir.


Örnek

JSF 2 Facelet İle Basit Bir Decorate (Dekorasyon) Şablon Örneği

JSF 2'de bir sayfa içinde birden fazla kullanılabilecek şablonlar yazılabilmektedir . Aşağıda bir dekorasyon (decorate) şablon örneği görülmektedir : 

 

<!DOCTYPE html PUBLIC 
"-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<div xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    style="background-color: red" >
	<ui:insert/>
</div>

 

Yukarıda bir div eklenmiş ve arkaplanı (background) kırmızı yapılmıştır (Dosyanın adını dec_template.xthml olsun).  Arkaplanı kırmızı div şablonunu bir sayfada birden fazla kullınabilir : 

 

<!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:ui="http://java.sun.com/jsf/facelets">
<title>Decarate Sablon Test</title>
<body>
	<ui:decorate template="/dec_template.xhtml">
		Burada Kırmızı Background'lu Div		
	</ui:decorate>
	
	<div>Buraya herhangi bir div</div>
	
	<ui:decorate template="/dec_template.xhtml">
		Burada Başka Kırmızı Background'lu Div		
	</ui:decorate>	
	
</body> 
</html>

 

Yukarıdaki sayfada div şablonu iki kere kullanılmıştır. Görüldüğü gibi ui:decorate etiketi kullanılmış ve şablon dosyası verilmiştir

 


Örnek

JSF 2 Facelet'te Basit Bir Repeat Örneği

Aşağıda bir String listesini repeat kullanarak liste (ol ve li ile) gösteren örnek :

<!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:ui="http://java.sun.com/jsf/facelets">
<title></title>
<body>
        Repeat Test
        <ul>
        <ui:repeat value="#{testBean.testList}" var="item">
            <li><h:outputText value="#{item}" /></li>
        </ui:repeat>
    </ul>               
</body> 
</html>

Bean sınıfı aşağıdaki gibidir : 

package com.test;

import java.util.*;
import javax.faces.bean.*;

@ManagedBean(name="testBean")
public class TestBean {

        private List<String> testList;
        
        public TestBean() {
                testList=new ArrayList<String>();
                testList.add("A");
                testList.add("B");
                testList.add("C");
                testList.add("D");
        }

        public List<String> getTestList() {
                return testList;
        }

        public void setTestList(List<String> testList) {
                this.testList = testList;
        }
        
}

 


Kavram

varStatus

Tanım: ui:repeat elementinde bir değişkene, döngüdeki maddenin kaçıncı index'de olduğu, çift veya tek sırada mı olduğu, ilk veya son satırda mı olduğu gibi bilgileri atamayı sağlayan özellik. Örneğin varStatus="test" şeklinde atama yapılırsa repeat içinde herhangi bir yerde test.index ile index değeri alınabilir

İpucu

Repeat Döngüsünde Index Değerini Öğrenmek

ui:repeat elementinde döngüde index sayısı alınabilir. Bunun için varStatus elementi kullanılır. Kullanımı aşağıdaki gibidir:
<ui:repeat value="#{testBean.list}" var="item" varStatus="myVarStatus">
İndex Sayısı : #{myVarStatus.index}
</ui:repeat>

myVarStatus değişkeninden tek mi çift mi sırada olunduğu, ilk veya son satır olduğu gibi bilgilere de ulaşılabilir

İpucu

Repeat Döngüsünde Index Değerini Öğrenmek

ui:repeat elementinde döngüde index sayısı alınabilir. Bunun için varStatus elementi kullanılır. Kullanımı aşağıdaki gibidir:
<ui:repeat value="#{testBean.list}" var="item" varStatus="myVarStatus">
İndex Sayısı : #{myVarStatus.index}
</ui:repeat>

myVarStatus değişkeninden tek mi çift mi sırada olunduğu, ilk veya son satır olduğu gibi bilgilere de ulaşılabilir



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir