JSF 1.2 den sonra karşımıza çıkan JSF 2.0′ye kısa bir göz atalım.
Neden JSF kullanmalıyım ?
Java coderlar genellikle JSP sayfaları içinde Java kodu yazarlar veya yazmak zorunda kalırlar. Bir proje sürecinde Front-End Developer ve Back-End Developer’ın yaptığı işleri entegre aşamasında bu önemli bir sorun oluşturur. Front-End Developer anlamadığı bir sürü kod parçasını sayfa içine gömmekle uğraşır veya Java coder kendini bir anda CSS yazarken bulur.
JSF öncelikle bu iki iş kolunun yaptığı işleri birbirine entegre aşamasında büyük kolaylık sağlıyor. Java kodu yerine xml taglarıyla hem daha temiz ve anlaşılır bir içerik oluşuyor hem de her iki taraf da o sayfayı kolayca düzenleyebiliyor.
Validator, Convertor, Localization gibi faydalı bir çok özelliğinin yanı sıra kendinize özel taglar da yazabiliyorsunuz(Custom Tags).
JSF 1.2′de page navigation rule’ları ve Java Bean leri faces-context.xml içinde tanımlamanız zorunluydu ama 2.0 ile beraber bunların hepsini son 3-4 yılın popüler uygulama yönetimi olan “Annotations” ile yapabiliyoruz. Dolayısıyla faces-config.xml önemini 2.0 ile beraber yitiriyor.
JSF 2.0 ile örnek bir proje oluşturulması
Malzemeler :
1-jsf-api.jar
2-jsf-impl.jar
Bu iki jarı kütüphaneye ekledikten sonra sıra web.xml i güncellemede:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> ... </web-app>
Burada .jsf uzantılı sayfaları FacesServlet’e yönlendiriyoruz. javax.faces.PROJECT_STAGE paramatresini Development olarak seçmek detaylı hata mesajları almak için önemli.
Örnek bir Java Bean:
package somePackage;
import javax.faces.bean.*;
@ManagedBean
public class SomeBean {
private String someProperty;
private String val = "";
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
public String getSomeProperty() {
return(someProperty);
}
public void setSomeProperty(String someProperty) {
this.someProperty = someProperty;
}
public String someActionControllerMethod() {
return("c?faces-redirect=true");
}
}
Görüldüğü gibi @ManagedBean ile bean’i tanımlıyoruz. Bean’e jsf sayfası içinden ulaşmak için beanName naming convention’ı kullanılıyor. Dilerseniz (name=”customname”) ile istediğiniz bir adı kullanabilirsiniz.
Sayfa Yönlendirme
<h:form>
<h:commandButton value="Go to Page" ajax="false"
action="#{someBean.someActionControllerMethod}"/>
</h:form>
Action’a verilen değer direk bir sayfa adı da olabilirdi, ama burada bean içindeki fonksiyon kullanıldı, bu sayede Java Class’ı içinde istenilen lojiğe göre gerekli yönlendirme yapılabilir.
Eclipse’te bir web projesi yaratırken Configuration kısmında JSF 2.0 seçerek hızlı bir giriş yapabilirsiniz.
JSF gelişmeye devam edecek/etmesi gereken bir framework, hatta bu frameworkun tamamiyle .NET’in web developmentta getirdiği “kolay kodlama” hamlesine karşı geliştirilmiş bir framework olduğunu düşünüyorum. Dolayısıyla Java’nın geleceği bulanık olan frameworklerinden biri değil (bkz: Java FX).
İnternette JSF ile ilgili çok çeşitli kaynak var, beğendiğim iki tanesini aşağıda veriyorum.
JSF MojarraProject Geliştiricileri : http://javaserverfaces.java.net/
http://www.oracle.com/technetwork/java/javaee/documentation/index-137726.html
http://www.mkyong.com/jsf2/implicit-navigation-in-jsf-2-0/
http://www.jsftutorials.net/




