RichFaces Nedir? Genel Bilgi..• Java ile web uygulamaları geliştirmenin pek çok yöntemi vardır.• Önceleri bu uygulamalar Servlet’ler ile başladı fakat Servlet’ler kodun içine HTML yazmayı gerektirdiğinden tutmadı.• Daha sonra Java dünyası HTML içine Java kodu gömmeyi başardı ve adına Java Server Pages(JSP) dedi.• Ama Jsp ile büyük çaplı projeler gerçekleştirilirken bu teknolojilerde iş mantığı ayrıştırması olmadığı için yazılan kodların çöplük halini aldığı ve okunabilirliğin büyük ölçüde azaldığı görüldü.
• Bu aşamadan sonra web çatıları kullanılmaya başlandı. Günümüzde kullanılan en popüler web çatısı Java Server Faces(JSF)tir.• JSF, MVC(Model-View-Controller) yapısı ile, yazılımı nesneler, görünümler ve kontrol sınıfları şeklinde mantıksal olarak böler ve barındırdığı bileşenler ile proje gerçekleştiriminde birçok kolaylık sağlar.• Ancak yine de profesyonel bir proje geliştirirken JSF bileşenleri yetersiz kalmaktadır. İşte bu anda yardımımıza 3. parti JSF kütüphaneleri (RichFaces, Icefaces, PrimeFaces) yetismektedir.
• RichFaces da Jboss firmasi tarafindan opensource olarak gelistirilmekte ve ücretsiz dagitilmakta olan zengin bir bileşen kütüphanesidir.• RichFaces, JSF’e Ajax yeteneğini (Core Ajax component kütüphanesi) kazandırarak, bizleri karmaşık scriptler yazmaktan kurtarır. JSF’teki HTML bileşenler de dahil olmak üzere her türlü bileşene kolayca AJAX desteği verilebilir.• RichFaces UI componenti ise RichFaces’a özel daha estetik bir arayüz hazırlamaya imkan sunar.
RichFaces Mimarisi• Ajax Filteresi: Filtre sayesinde birden fazla requesti ele alabilmeyi sağlar. Geliştirici filtreyi web.xml içine richfaces’in olanaklarından faydalanabilmek için yerleştirmelidir.• Ajax Action Bileşenleri: AjaxCommandButton, AjaxCommandLink, AjaxPoll and AjaxSupport ve diğer action bileşenleri ile istemci tarafından ajax requestleri göndermek için kullanılır.
• Ajax Konteyner: JSF sayfalarının tutulduğu ve ajax requestleri boyunca kodlandığı bir arayüzdür. AjaxViewRoot ve AjaxRegion bu arayüzün gerçekleştirimleridir.• JavaScript Motoru: Rich faces Java Script motoru istemci tarafında çalışır. Ajax responselarına göre jsf sayfasında farklı alanları günler. Java Script motoru bir api sağladığından programcının javascript kodu yazmasına ve bunun fonksiyonelliğini sağlamasına gerek yoktur.
RichFaces Kurulumu• RichFaces’ın sisteme kurulması birkaç jarın eklenmesi kadar basit bir işlemdir.• WebContent/WEB-INF/lib klasörü altına aşağıdaki jarları eklemeniz yeterlidir. • richfaces-core-api.jar • richfaces-core-impl.jar • richfaces-components-api.jar • richfaces-components-ui.jar• RichFaces4 ile birlikte web.xml de herhangi bir değişiklik yapmanıza gerek yoktur.
• Maven tabanlı projelerde kurulumu gerçekleştirdikten sonra aşağıdaki kod bloğu pom.xml dosyasına eklenmelidir.<dependencyManagement><dependencies><dependency><groupId>org.richfaces</groupId><artifactId>richfaces-bom</artifactId><version>${richfaces.version}</version><scope>import</scope><type>pom</type></dependency></dependencies></dependencyManagement>…<dependency><groupId>org.richfaces.ui</groupId><artifactId>richfaces-components-ui</artifactId></dependency><dependency><groupId>org.richfaces.core</groupId><artifactId>richfaces-core-impl</artifactId>
• RichFaces kütüphanelerini JSF sayfalarında kullanabilmek için son olarak JSF sayfalarına aşağıdaki linkler eklenmelidir. xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"
RichFaces Kütüphaneleri• a4j: Temel ajax bileşenlerini destekler. <a4j:xxx > etiketi ile kullanılır• rich: Bağımsız, zengin kullanıcı arayüzlü bileşenleri destekler <rich:xxx> etiketi ile kullanılır.
RichFaces Bileşenleri• RichFaces bileşenlerini aşağıdaki başlıklarla genelleştirebiliriz: • Ajax Action • Trees • Ajax Queue • Output/Panels • Menus • Ajax Output/Containers • Inputs and Selects • Validation • Drag and Drop • Data Iteration • Miscellaneous
Ajax Action Bileşenleri• AJAX: İstemci taraflı dinamik sayfalar oluşturulup, sayfa bütünüyle yenilenmeden yalnızca belli bir parçasının yenilenebilmesine olanak sağlayan teknolojiler bütünü.• RichFaces’ın Ajax desteği a4j:xxxx etiketleriyle sağlanır • a4j:ajax • a4j:commandButton • a4j:commandLink • a4j:jsFunction • a4j:poll • a4j:param
a4j:ajax<h:form> <h:inputText value="#{userBean.name}"> <a4j:ajax event="keyup" render="out" /> </h:inputText> <br /> <h:outputText value="#{userBean.name}" id="out" /> </h:form>• render : Hedef bileşenin ID’si• event : Ne zaman render edilecek?Belirtilen event her gerçekleştiğinde hedef bileşenindeğeri güncellenir. userBean.getName() çağrılır
• Standart h:commandButton ile a4j:ajax bileşenini birleştirir.• rendered="#{not empty userBean.name}" text alanı boş olduğunda Merhaba yazmamak için eklenmiştir.
Alax Queue Bileşenleri• a4j: attachQueue
Validation• Sunucu tarafına gitmeden istemci tarafında girdiler için beklenen biçimsel kısıtların sağlanıp sağlanmamasını kontrol eder. • E-mail’in geçerli biçimde olup olmadığı • En az x en fazla y tane karakter girilebilir • Sayı girmelisiniz • Girilen sayı x ile y arasında olmalıdır • Girilen şifreler uyuşmuyor
• Bir inputbox dan diğerine geçildiğine request tetiklenmektedir.• Yukarıdaki şekilde görüldüğü gibi server tarafına gitmeye hiç gerek kalmadan gerekli kontroller yapılabilmektedir.• İstenilen input için bütün kısıtlar istemci tarafında konulabilir ve bunu yapmak için sadece <rich:validator/> etiketini kullanmak yeterli olacaktır.
rich:graphValidator• Bu bileşen nesnelerin geçerlemesini yapmak için kullanılmaktadır.
• Burada girilen parolalar managed bean’e gönderilmektedir ancak sayfa tekrar render edilmemektedir. Girilen şifrelerin eşleştirilmesi managed bean’de yapılmaktadır.
ManagedBean:
Data Iteration Bileşenleri• rich: extendedDataTable