JSF

JSF Dersleri – Dönüştürücüler (Converters) 2 – Custom Converter

Merhabalar arkadaşlar. Dönüştürücüler 1 yazımıda f:convertNumbers ve f:convertDateTime etiketlerini incelemiştik ve JSF mimarisi içindeki dönüştürme yapısını görmüştük. Bu yazımızıda ise özel dönüştürücü yazmayı öğreneceğiz. Önceki yazıda da belirttiğim üzere daha bütün yapıda gitmesi için JSF Nedir? Giriş,IDE Kurulumu Ve İlk Uygulama yazımda Converter 1 ve 2 yazılarını yazı listesinde öne aldım.

Kimi zamanlarda JSF’nin kendi dönüştürücüleri yetmez ve bir özel dönüştürücü yazmamız gerekebilir. Bu durumda yapılması gereken işlemler:

  • Java sınıfı oluşturmak,
  • Sınıfa Converter arabirimini uygulamak (implement etmek)
  • @FacesConverter notasyonu ile eşsiz bir id ataması yapmak
  • f:converter etiketi ya da converter özelliği ile yazılan dönütürücüyü uygulamak.

Şimdi örnek kod üzerinden gidelim.

CustomConverterBean.java

Sınıfmız içinde ilk olarak @FacesConverter notasyonu ile bu sınıfa eşsiz bir converter id’si ataması yapıyoruz. Xhtml içinden dönüştürücü çağırımı bu id ile yapılacak.

CustomConverterBean sınıfını Converter arabiriminden implement ettiğimiz takdirde getAsString ve getAsObject metodlarını override etmemiz gerekmektedir. Burada dönüştürme işlemi devreye girdiğinde öncelikle getAsString metodu çağırılır ve dönüştürme işlemine tabi tutulacak değer String’e dönüştürülüp return edilir. Akabinde getAsObject metodu devreye girer.  Bu metot içinde dönüştürme işlemlerimizi  gerçekleştireceğiz. String tipinde gelen değer üzerinde kontrol ve ekleme çıkarma işlemleri yapacağız. Önceki dersten hatırlayacağınız üzere pattern belirleme yapmıştık, bunu da onun gibi düşünebilirsiniz. Örneğimizde kullanıcıdan bir URL alınıyor, dönüştürme işlemine tabi tutulacağı anlaşılıp bu sınıfa gönderiliyor, getAsString ile String’e dönüştürülüp getAsObject metoduna gönderiliyor. Bu metot içinde bir StringBuilder oluşturuluyor, oluşturulan StringBuilder’a ilk olarak kullanıcının girdiği değerde eğer başında http:// yoksa ekleniyor. Sonra girilen metin geçerli bir URL mi değil mi URI ile kontrol ediliyor. Geçerli ise StringBuilder’a ekleniyor. Değilse ConvertException ile hata döndürülüyor. Son adımda ise bir ConverterBean nesnesi oluşturulup URL konulup return ediliyor.

ConverterBean.java

Bu sınıf basit bir Managed Bean sınıfımız. Yalnız url nesnemiz String olduğu için içinde toString metodunu Override etmeyi unutmamamız gerekiyor.

ConverterPage.xhtml

Xhtml kodumuz içerisinde bir değer dönüştürme işlemine tabi tutulacaksa elementin etiketleri arasında f:converter etiket ile ya da elementin converter özelliği ile işlem yapılabilir. Bu noktada atama işlemi yapılırken yazılmış olan dönüştürücünün Id bilgisi (@FacesConverter ile atanmış) f:converter etiketinin converterId özelliğine atanır.  Eğer f:converter kullanmak istemezseniz şu şekilde converter özelliğinden de faydalabilirsiniz:

Böylece yazmış olduğunuz özel dönüştürücü butona basıldığı anda devreye girecek ve buton bizi result.xhtml sayfasına yönlendirecek.

result.xhtml

Ekran Çıktıları

Screen Shot 2015-11-20 at 17.48.27

İlk olarak inputText’e geçersiz olacak, URL olarak kabul edilmeyecek karakterler giriyorum.

Screen Shot 2015-11-20 at 17.50.40

Submit butonuna tıkladığımda girilen metnin geçersiz URL olduğu söylendi.

Screen Shot 2015-11-20 at 17.51.32

Şimdi geçerli URL olarak kod5.org’u giriyorum ve Submit butonuna tıklıyorum.

Screen Shot 2015-11-20 at 17.51.57

Ben http:// girmediğim halde result sayfasında http:// eklenmiş halde görünüyor.

Bu yazıda da bu kadar arkadaşlar. Temel olarak Custom Converter (Özel Dönüştürücü) nasıl kullanabileceğimizi öğrenmiş olduk. Gelecek yazıda görüşmek üzere sağlıcakla kalın.