Basit JSF Özel Bileşen (Custom Component) Yapımı
Merhaba arkadaslar bu yazimda java tabanli basit bir jsf bileseni (component) nasil yapilir onu anlatacagim … Yapmak istedigim bilesene gelen bir degerin hepsini buyuk harf yapmak ilk once java classimizi olusturalim ve UIComponentBase den ectend edelim .. ve encodeBegin methodunu ezelim (override) . Classimiz soyle :
yaziyibyt/YaziyiBuyut.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package yaziyibyt; import java.io.IOException; import javax.faces.component.FacesComponent; import javax.faces.component.UIComponentBase; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; /** * * @author www.turkishh.com */ @FacesComponent("yaziyibyt.YaziyiBuyut") public class YaziyiBuyut extends UIComponentBase { @Override public String getFamily() { return "benim.ozel.bilesenim"; } @Override public void encodeBegin(FacesContext context) throws IOException { //Burada sayfadan alacagimiz degeri degiskene tanimliyoruz //ve upperCase yapiyoruz String value = (String) getAttributes().get("yazi"); if (value != null) { ResponseWriter writer = context.getResponseWriter(); writer.write(value.toUpperCase()); } } } |
Simdi ise bize bir tane .xml dosyasi lazim bu dosyada biz bilesene ulasabilecegimiz namespace , classimizin yolunu ve bilesenimizin ozellikleri nin isiminlerini tanimliyacagiz..
WEB-INF/yaziyibuyut.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?xml version="1.0" encoding="UTF-8"?> <facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0"> <namespace>http://example.com/test</namespace> <tag> <tag-name>yaziyiBuyut</tag-name> <component> <component-type>yaziyibyt.YaziyiBuyut</component-type> </component> </tag> </facelet-taglib> |
ve son islem olarak bunu projemizin web.xml dosyasinda kutuphane olarak tanimliyoruz.
WEB-INF/web.xml
1 2 3 4 |
<context-param> <param-name>javax.faces.FACELETS_LIBRARIES</param-name> <param-value>/WEB-INF/yaziyibuyut.xml</param-value> </context-param> |
Simdi gelelim sayfamizda bilesenimizi nasil tanimliyacagimiza ve kullanacagimiza :
index.xhtml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?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:h="http://java.sun.com/jsf/html" xmlns:turkishh="http://example.com/test"> !!//bilesenimizi import ediyoruz <h:head> <title>Facelet Title</title> </h:head> <h:body> <turkishh:yaziyiBuyut yazi="Basit JSF Custom Component yapımı"/> <br/> <turkishh:yaziyiBuyut yazi="www.turkishh.com"/> </h:body> </html> |
ve sayfada ciktisi su sekilde olacak
Umarim yararli olmustur ..
Iyi Calismlar 😉