JSF

JSF Dersleri – Validators 1 – Validators Tags

Merhabalar arkadaşlar. Bu yazıda JSF’nin doğrulayıcı ya da diğer adı ile geçerlilik denetleyici mekanizmasının iki parçasından biri olan Validator Tags konusunu öğreneceğiz. Gelecek yazıda da Custom Validator konusunu öğreneceğiz.

JSF kütüphanesi içerisinde f: etiketi ile kullanabileceğimiz hazır birtakım denetleyiciler mevcuttur. Kütüphane içinde şu bileşenler mevcuttur ve ne işe yaradıkları da şöyledir:

  • f:validateLength: Girilen metnin uzunluğunun istenen ölçüde olmasını sağlar. minimum özelliğine atanan değer metnin en az uzunluğunu, maximum da metnin en fazla uzunluğunu limitler.
  • f:validateLongRange: Bildiğiniz üzere Long veri tipi Java’da Integer’dan daha geniş aralıkta olabilecek şekilde tam sayı tipidir. bu etiketin minimum özelliği girilen değerin en az kaç olabileceği, maximum da en çok kaç olabileceğini belirtir. Etiketin kullanıldığı sırada denetlenecek değerin Long olması şart değildir. Integer da olabilir.
  • f:validateDoubleRange: Bu etiket de tipi Double olarak belirlenen değerin denetlenmesi işlemini yapar. Üstteki etiketteki gibi bu etikette dedaha dar kapsamlı tip kullanılabilir. Yani etiket Double üzerine endekslense de Float kullanabiliriz.
  • f:validateRegex: Kullanıcıdan alacağınız değeri belirli bir şablona (pattern) göre denetlemek için kullanılan etikettir. Etiketin pattern özelliğine atanacak değer form gönderildiğinde değerin denetlenmesi için kullanılır.

Şimdi örnek kod üzerinden kullanım şekillerini inceleyelim.

index.xhtml

JSF kodumuz içinde panelGrid etiketimiz ile 3 kolona böldük.

Birinci satırda kullanıcıdan isim soy isim aldığımız bir inputText bulunuyor. inputText’in validatorMessage özelliği ile JSF’nin üreteceği mesaj yerine kendi mesajımızı tanımlıyoruz. inputText’in açma ve kapatma etiketleri arasında f:validateLength etiketi ile kullanıcıdan alınacak değerin uzunluk kısıtlamasını yapıyoruz. minimum=”6″ ile değerin en az 6 karakter olacağını, maximum=”25″ ile en fazla 25 karakter olabileceğini söylüyoruz. h:message etiketi ile de geçerlilik denetleyicisinden dönecek hatanın ekrana yazdırılmasını yapıyoruz. Dikkat etmemiz gereken şey id-for ilişkisi. for özelliğine hangi bileşenin id değeri atanırsa onunla ilgili hatayı yazdıracaktır.

İkinci satırda kullanıcıdan yaşını istiyoruz. Yaş değeri managed bean içinde int olarak tanımlı. f:validateLongRange  etiketi ile alınacak yaşın maximum ve minimum değerlerini tanımlıyoruz. Örneğimizde girilecek yaş en az 18, en fazla 60 olmak zorundadır.

Üçüncü satırda maaş bilgisi alıyoruz ve kesirli bir sayı ile işlem yapmak istiyoruz. f:validateLongRange ile aynı şekilde en az ve en fazla kısıtlamalarını tanımlıyoruz.

Dördüncü satırda ise kullanıcıdan e-posta adresini istiyoruz. f:validateRegex etiketinin pattern özelliğine atadığımız

ifadesi kullanıcının girdiği e-posta adresinin denetleneceği şablondur. Şablon şu manaya gelmektedir:


  • ifadesinde ^ patternin başladığını bildirir. Takip eden köşeli parantez içinde büyük küçük dahil olmak üzere a harfinden z harfine tüm harflerin, 0 ile 9 arasında (9 dahil) rakamların, – ve + işaretlerinin girilecek değerin başlangıcı ve bitişi olarak kullanılabileceği ve @ işaretine kadar (opsiyonel kısım bulunmazsa) bunları içerebileceği söylenmektedir. Yani siz değeri ?, !, #, $ vs. işaretleri ile başlatmaya ya da @ işaretinden hemen önce bitirmeye kalkarsanız hata alırsınız.

  • Baştaki + işareti az önce bahsi geçen başlatma ve bitirme karakterlerinin olduğu kısma ekleme yapar. İfadenin sonundaki * işareti bu kısmın isteğe bağlı olduğunu bildirmektedir. Yani + işaretinden önce bir şey yazıp direk geçedebiliriz ya da . işaretini kullanıp ekleme de yapabiliriz. ilkay.gunel@kod5.org gibi örneğin. Parantez içinde \ işareti değerin içine ?,$ vs. girmesini engeller. Bunlar girilip gönderildiğinde hata fırlatır.

  • Bu ifadede köşeli parantezlerin direk önünde @ işareti olması @ işaretinin kullanımının zorunlu olduğu manasına gelir. (Üstteki ifade de . işareti köşeli parantezlerin içinde idi fakat o ifade isteğe bağlı idi.) Köşeli parantez içinde yine büyük a’dan z’ye tüm harfler,0’dan 9’a tüm rakamlar ve – işareti kullanılabilir.

  • 2 adım yukarıda gördüğümüz isteğe bağlı ifade ile aynıdır. Farkı – işaretinin kullanılamamasıdır.

  • Bu ifade de @ işaretinden sonra yazılması gereken zorunlu kısım bildirilmektedir. Kısımda . işaretinin köşeli parantezler önünde olması onun kullanımını zorunlu kılmıştır ve . işaretinden sonra sadece büyük küçük fark etmeksizin a’dan z’ye harflerin kullanılabileceği bildiriliyor. Burada diğer şablon parçalarına göre bir de süslü parantez içinde 2, görüyoruz. Bu durum . işaretinden sonra yazılacak kısmın en az 2 basamak olması gerektiğini ve maximum limiti olmadığını bildirir. $ işareti ise şablonun (pattern) bittiği anlamındadır.

ValidatorTagsBean.java

Java sınıfımız içinde değerleri tutacak değişkenler ve onların get-set metotları yer almakta.

datas.xhtml

Datas sayfası içinde kullanıcının girdiği ve geçerlilik denetlemesinden geçen değerler yazdırılmaktadır.

Ekran Çıktısı

Şu değerleri girdiğimde validatorlar denetleme yaptılar ve değerlerin uygun olmadığına karar verdiler. KOD5 kelimesi 6’dan az karakter sayısında, yaş 18’den küçük, maaş 1000.50’den az, e-posta adresinin @ işaretinden önceki kısmı . ile bitemeyeceğinden (isteğe bağlı kısımda . kullanılırsa devamında bişeyler gelmesi lazım) hatalar fırlatıldı.

Screen Shot 2016-02-07 at 03.17.35

Değerleri değiştrip şunları giriyorum ve gönder butonuna tıklıyorum:

Screen Shot 2016-02-07 at 03.20.18

Datas sayfasına yönlendirildim.

Screen Shot 2016-02-07 at 03.20.34

Bu yazıda JSF kütüphanesi içindeki 4 adet denetleyici etiketin kullanımını öğrendik arkadaşlar. Gelecek yazıda da kendimize özel doğrulayıcı (geçerlilik denetleyicisi) yazmayı öğreneceğiz. Görüşene kadar sağlıcakla kalın.