Geçerlilik Denetleyicisi ile Form Örneği
Merhaba arkadaşlar. Bu yazımızda önceki yazımızda belirttiğimiz gibi bir form örneği yapacağız. Daha önce anlatmadığımız bir konu olan geçerlilik denetleyicileri konusundan 2 adet denetleyiciyi bu yazıda anlatmış olacağım. Şimdi ben size projenin kodlarını veriyorum. Kodların ardından açıklama kısmında denetleyicilerin anlatımı yer almaktadır. Kodlarda denetleyici dışında daha önce bahsetmediğimiz bir nokta yoktur.
index.xhtml Kodu
<?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://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="kayit_formu">
<h:panelGrid columns="4">
<h:outputText value="Adınız:"/>
<h:inputText value="#{d.isim}" required="true"/>
<h:outputText value="Soyadınız:"/>
<h:inputText value="#{d.soyisim}" required="true"/>
<h:outputText value="E-posta adresiniz:"/>
<h:inputText value="#{d.esposta}" required="true" validatorMessage="Geçersiz E-posta adresi!">
<f:validateRegex pattern="^[_A-Za-z0-9-+\]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})$"/>
</h:inputText>
<h:outputText value="Sisteme giriş parolanız:"/>
<h:inputSecret value="#{d.parola}" required="true"/>
</h:panelGrid>
<h:panelGrid columns="4">
<h:outputText value="Oturduğunuz ili seçiniz:"/>
<h:selectOneMenu value="#{d.il}">
<f:selectItems value="#{d.illeridondur()}"/>
</h:selectOneMenu>
<h:outputText value="Cinsiyetiniz:"/>
<h:selectOneRadio value="#{d.cinsiyet}">
<f:selectItems value="#{d.cinsiyetleridondur()}"/>
</h:selectOneRadio>
<h:outputText value="LinkEdin hesabınız var mı?"/>
<h:selectOneRadio value="#{d.linkedinkullaniyormusunuz}">
<f:selectItems value="#{d.hesapvarmidondur()}"/>
</h:selectOneRadio>
<h:outputText value="Tam adresinizi giriniz:"/>
<h:inputTextarea value="#{d.adres}" required="true"/>
</h:panelGrid>
<h:panelGrid columns="1">
<h:outputText value="Hobileriniz nelerdir?"/>
<h:selectManyCheckbox value="#{d.hobiler}">
<f:selectItems value="#{d.hobilistesinidondur()}"/>
</h:selectManyCheckbox>
</h:panelGrid>
<h:panelGrid columns="1">
<h:outputText value="İngilizce bilginiz nedir?"/>
<h:selectOneRadio value="#{d.yabanci_dil_seviyesi}">
<f:selectItems value="#{d.ydseviyeleridondur()}"/>
</h:selectOneRadio>
</h:panelGrid>
<h:commandButton value="GÖNDER" action="gelen_veriler.xhtml"/>
</h:form>
</h:body>
</html>
gelen_veriler.xhtml Kodu
<?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://xmlns.jcp.org/jsf/html">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<ol>
<li>
#{d.isim}
</li>
<li>
#{d.soyisim}
</li>
<li>
#{d.il}
</li>
<li>
#{d.esposta}
</li>
<li>
#{d.linkedinkullaniyormusunuz}
</li>
<li>
#{d.cinsiyet}
</li>
<li>
#{d.adres}
</li>
<li>
#{d.parola}
</li>
<li>
#{d.hobileriStringecevir()}
</li>
<li>
#{d.yabanci_dil_seviyesi}
</li>
</ol>
</h:body>
</html>
Degiskenler.java Kodu
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="d")
@RequestScoped
public class Degiskenler {
private String isim;
private String soyisim;
private String il;
private String esposta;
private String linkedinkullaniyormusunuz;
private String cinsiyet;
private String adres;
private String parola;
private static Map<String,Object> cinsiyetler=new LinkedHashMap<String,Object>();
private static Map<String,Object> iller=new LinkedHashMap<String,Object>();
private static Map<String,Object> hesapvarmi=new LinkedHashMap<String,Object>();
private static Map<String,Object> hobilistesi=new LinkedHashMap<String,Object>();
private String[] hobiler=new String[7];
private String yabanci_dil_seviyesi;
private static Map<String,Object> ydseviyeler=new LinkedHashMap<String,Object>();
static{
ydseviyeler.put("İyi", "İyi");
ydseviyeler.put("Orta", "Orta");
ydseviyeler.put("Yok", "Yok");
}
public Map<String,Object> ydseviyeleridondur()
{
return ydseviyeler;
}
static{
hobilistesi.put("Kitap Okumak", "Kitap Okumak");
hobilistesi.put("Futbol Maçı İzleme", "Futbol Maçı İzleme");
hobilistesi.put("Koleksiyonlar", "Koleksiyonlar");
hobilistesi.put("Tiyatro ve Sinema", "Tiyatro ve Sinema");
hobilistesi.put("Formula 1", "Formula 1");
hobilistesi.put("Gastronomi", "Gastronomi");
hobilistesi.put("Avcılık", "Avcılık");
}
public Map<String,Object> hobilistesinidondur()
{
return hobilistesi;
}
public String hobileriStringecevir()
{
return Arrays.toString(hobiler);
}
static{
iller.put("İSTANBUL", "İSTANBUL");
iller.put("ANKARA", "ANKARA");
iller.put("SAMSUN","SAMSUN");
iller.put("ADANA", "ADANA");
iller.put("ESKİŞEHŞİR", "ESKİŞEHİR");
}
public Map<String,Object> illeridondur()
{
return iller;
}
static{
cinsiyetler.put("Erkek", "Erkek");
cinsiyetler.put("Bayan", "Bayan");
}
public Map<String,Object> cinsiyetleridondur()
{
return cinsiyetler;
}
static{
hesapvarmi.put("Evet", "Evet");
hesapvarmi.put("Hayır", "Hayır");
}
public Map<String,Object> hesapvarmidondur()
{
return hesapvarmi;
}
public String getParola() {
return parola;
}
public void setParola(String parola) {
this.parola = parola;
}
public static Map<String, Object> getCinsiyetler() {
return cinsiyetler;
}
public static void setCinsiyetler(Map<String, Object> cinsiyetler) {
Degiskenler.cinsiyetler = cinsiyetler;
}
public static Map<String, Object> getHesapvarmi() {
return hesapvarmi;
}
public static void setHesapvarmi(Map<String, Object> hesapvarmi) {
Degiskenler.hesapvarmi = hesapvarmi;
}
public String getAdres() {
return adres;
}
public void setAdres(String adres) {
this.adres = adres;
}
public String getCinsiyet() {
return cinsiyet;
}
public void setCinsiyet(String cinsiyet) {
this.cinsiyet = cinsiyet;
}
public Map<String, Object> getIller() {
return iller;
}
public void setIller(Map<String, Object> iller) {
this.iller = iller;
}
public String getIsim() {
return isim;
}
public void setIsim(String isim) {
this.isim = isim;
}
public String getSoyisim() {
return soyisim;
}
public void setSoyisim(String soyisim) {
this.soyisim = soyisim;
}
public String getIl() {
return il;
}
public void setIl(String il) {
this.il = il;
}
public String getEsposta() {
return esposta;
}
public void setEsposta(String esposta) {
this.esposta = esposta;
}
public String getLinkedinkullaniyormusunuz() {
return linkedinkullaniyormusunuz;
}
public void setLinkedinkullaniyormusunuz(String linkedinkullaniyormusunuz) {
this.linkedinkullaniyormusunuz = linkedinkullaniyormusunuz;
}
public String[] getHobiler() {
return hobiler;
}
public void setHobiler(String[] hobiler) {
this.hobiler = hobiler;
}
public static Map<String, Object> getHobilistesi() {
return hobilistesi;
}
public static void setHobilistesi(Map<String, Object> hobilistesi) {
Degiskenler.hobilistesi = hobilistesi;
}
public String getYabanci_dil_seviyesi() {
return yabanci_dil_seviyesi;
}
public void setYabanci_dil_seviyesi(String yabanci_dil_seviyesi) {
this.yabanci_dil_seviyesi = yabanci_dil_seviyesi;
}
public static Map<String, Object> getYdseviyeler() {
return ydseviyeler;
}
public static void setYdseviyeler(Map<String, Object> ydseviyeler) {
Degiskenler.ydseviyeler = ydseviyeler;
}
}
Denetleyicilerin Açıklaması:
Kodları çalıştırdığınızda ekranında form bileşenleri göreceksiniz. Buradaki form bileşenleri temel olarak çok kullanılanlardır.
Index sayfamız içindeki kodlarımızda inputText ve inputSecret kısmına dikkat ediniz. Orada required=true ifadesini göreceksiniz. Bu kullanıcının formu doldururken o kısmı boş geçmesini engelleyen yapıdır. Az sonra ekran çıktımızda da bunu göreceğiz.
Index sayfamız içinde kullanıcıdan epostayı aldığımız yere dikkat ediniz. Orada bir validatorMessage ve
pattern=”^[_A-Za-z0-9-+]+(.[_A-Za-z0-9-]+)@[A-Za-z0-9-]+(.[A-Za-z0-9]+)(.[A-Za-z]{2,})$”
-
Bu kodda ^ işareti denetleyicinin başlangıcıdır.
-
[_A-Za-z0-9-+] ifadesi sizin girilecek e-mailin büyük küçük harf, rakam, tire, , + işareti koyulmasına izin vermeniz anlamına gelmektedir.
-
(.[_A-Za-z0-9-]+)* ifadesinin sonundaki * ifadesi bu ifadenin optional olduğunu bize bildiriyor. işaretinden sonraki kısım bir önceki kısma eklenebilir anlamındadır. Yani işareti koyup bir takım ifadeler verdiğinizde bu girilen ifadeye eklenebilir anlamındadır. Burada işaretinden sonra . , büyük küçük harf, rakam, -, + koyabileceğimiz ama koymasak da olur anlamındanır.
-
@[A-Za-z0-9-] ifadesi ise e-mailde bulunan @ işaretini zorunlu kılar ve ondan sonra bir kelime girilmesi gerektiğini söyler.
-
(.[A-Za-z0-9]+)* ifadesi @ işaretinden sonraki kelimeden sonra . ile bir kelime ekleyebilirsiniz demektir. * işaretinden göreceğiniz gibi optional’dır.
-
(.[A-Za-z]{2,}) ifadesi de @ işaretinden sonraki kelime gurubunun ardından . ile en az 2 harflik bir ifadenin girilmesini zorunlu kılar.
-
$ işareti de denetleyicinin bittiğini bildirir.
Şimdi ekran çıktılarına bakalım. Resimlerin altında bazı açıklamalar bulunmaktadır.
5 adet textBox’tan 4’ünü boş bıraktık. Gönder butonuna bastık. 4 adet girilmesi zorunludur yazısı geldi.
Normal de de geçersiz olan bir e-mail girip göndere bastık. Geçersiz olduğunu bildirdi.
Tüm değerli düzgün olarak girdik.
Girilen verileri gösteren sayfa.
Bu yazımızda da bu kadar arkadaşlar. Form örneğimizi ve geçerlilik denetleyicisini incelemiş olduk. Gelecek yazımızda Facelet Tags konusuna değineceğiz.
Esen kalın.