JSF Melih Sakarya JSF Java Server Faces Facelet www.mergecons.com www.mergecons.com 1
Facelet JSF için JSP ye alternatif bir yapıdır. Tamamen xml tabanlıdır ve xhtml olarak yazılır. Xml standartlarına uyulmak zorundadır. Gelişmiş facelet tagleri bulunur. f:view a ihtiyaç yoktur..xhtml dosyaları olarak yazılır. www.mergecons.com 2
Facelet desteği <context-param> <param-name>javax.faces.default_suffix</param-name> <param-value>.xhtml</param-value> </context-param> www.mergecons.com 3
Facelet desteği <view-handler>com.sun.facelets.faceletviewhandler</viewhandler> www.mergecons.com 4
Facelet desteği jsf-facelets.jar www.mergecons.com 5
test.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://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> Merhaba Dunya </html> www.mergecons.com 6
test.jsf <!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"> Merhaba Dunya </html> www.mergecons.com 7
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" <head> xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> </head> <body> </body> </html> <title>sayfa Basligi</title> icerik www.mergecons.com 8
Sınıf Çalışması Basit bir facelet sayfası oluşturun. www.mergecons.com 9
Facelet Template <!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" <head> xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> </head> <body> </body> </html> <title> </title> <ui:insert name="baslik">sayfa Basligi</ui:insert> <ui:insert name="icerik"></ui:insert> www.mergecons.com 10
Facelet Template <!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"> <ui:composition template="test2.xhtml"> <ui:define name="baslik" > </ui:define> Test3 sayfasi <ui:define name="icerik" > </ui:define> </ui:composition> </html> test3 icerik alani www.mergecons.com 11
Sınıf Çalışması Aşağıdaki özelliklere sahip bir facelet template oluşturun. Banner Menü İçerik Başlık www.mergecons.com 12
ui:include <!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"> <head> </head> <body> </body> </html> <title>sayfa Basligi</title> <ui:include src="test4.xhtml" /> www.mergecons.com 13
ui:include <!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"> içerik sayfasi </html> www.mergecons.com 14
ui:param <!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"> <head> </head> <body> </body> </html> <title>sayfa Basligi</title> <ui:include src="test4.xhtml" > </ui:include> <ui:param name="isim" value="melih" /> www.mergecons.com 15
ui:param <!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"> Merhaba <h:outputtext value="#{isim}" /> </html> www.mergecons.com 16
Sınıf Çalışması Bir menü oluşturup import edin. Menü başlığını parametre olarak gönderin. www.mergecons.com 17
Facelet çıktıları public class DemoBean { String mesaj="merhaba Dunya"; public String getmesaj() { } return mesaj; } public void setmesaj(string mesaj) { } this.mesaj = mesaj; www.mergecons.com 18
Facelet çıktıları <!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"> <head> </head> <body> </body> </html> <title>sayfa Basligi</title> <h:outputtext value="#{demo.mesaj}" /> <br /> #{demo.mesaj} www.mergecons.com 19
ui:repeat <ui:repeat value="#{demo.kullanicilar}" var="kullanici"> #{kullanici.ad} #{kullanici.soyad} <br/> </ui:repeat> www.mergecons.com 20
ui:repeat public class Kullanici { public Kullanici(String ad, String soyad) { this.ad = ad; this.soyad = soyad; } String ad; String soyad; //getter setter } www.mergecons.com 21
ui:repeat public class DemoBean { public DemoBean(){ } kullanicilar.add(new Kullanici("Melih","Sakarya")); kullanicilar.add(new Kullanici("Ahmet","Dursun")); kullanicilar.add(new Kullanici("Mehmet","Yangin")); kullanicilar.add(new Kullanici("Hande","Yener")); List<Kullanici> kullanicilar = new ArrayList<Kullanici>(); public List<Kullanici> getkullanicilar() { return kullanicilar; } public void setkullanicilar(list<kullanici> kullanicilar) { this.kullanicilar = kullanicilar; } } www.mergecons.com 22
Sınıf Çalışması Ogrencileri listeleyen bir ekran hazırlayınız. www.mergecons.com 23
ui:remove Facelet seviyesinde bileşenleri devre dışı bırakmak için kullanılır. www.mergecons.com 24
s:decorate <ui:composition 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"> <tr> <td> <ui:insert name="label"></ui:insert> : </td> <td> <ui:insert /> </td> </tr> </ui:composition> www.mergecons.com 25
s:decorate <ui:decorate template="/tasarim.xhtml"> <ui:define name="label">ad</ui:define> <h:inputtext value="#{kullanicikayitbean.ad}" /> </ui:decorate> www.mergecons.com 26
JSTL Java Standard Tag Library Standarttır. Fonksiyonel bir kütüphanedir. Facelet içerisinde desteklenir. www.mergecons.com 27
c:foreach <c:foreach items="#{demo.kullanicilar}" var="kullanici"> #{kullanici.ad} #{kullanici.soyad} <br/> </c:foreach> www.mergecons.com 28
c:foreach <c:foreach items="#{demo.kullanicilar}" var="kullanici" varstatus="index"> #{index.index+1} - #{kullanici.ad} #{kullanici.soyad} <br/> </c:foreach> www.mergecons.com 29
Sınıf Çalışması Ogrencileri JSTL kullanarak listeleyen bir ekran hazırlayınız. www.mergecons.com 30
Operatorler Aritmetik operatorler + - * / % (mod) Mantıksal operatorler && (and) (or)! (not) İlişkisel operatorler == (eq)!= (ne) < (lt) > (gt) <= (le) >= (ge) Empty [0] () www.mergecons.com 31
c:if public class DemoBean { String ad = "Melih"; String soyad; //Set ve get metodları } www.mergecons.com 32
c:if <c:if test="#{demo.ad eq 'Melih'}"> Isim melih </c:if> <c:if test="#{empty demo.soyad}"> soyad bos </c:if> www.mergecons.com 33
c:choose <c:choose> <c:when test="#{demobean.yas == 0}"> Yas Girilmemis </c:when> <c:when test="${demobean.yas lt 0}"> Yas Girilmemis </c:when> <c:otherwise> Yas sorunu bulunmuyor </c:otherwise> </c:choose> www.mergecons.com 34
Son Sorular???? www.mergecons.com 35