Merhaba arkadaşlar. Bu yazımızda selectOneRadio kullanımını ele alacağız ve bir örnekle seçilen nesneleri diğer sayfaya göndereceğiz.

SelectOneRadio yazısına başlamadan önce bir konuya değinelim. Gelecek yazımızı form bileşenlerini geniş çapta kullanacağımız bir örneğe adayacağız. O örnekte forma girilen bilgileri diğer sayfaya alacağız. Şimdi selectOneRadio kullanımına bakalım.

SelectOneRadio Nedir?

SelectOneRadio bizim Java SE kodlarken Swing yapısı içerisinde gördüğümüz RadioButton bileşenine karşılık gelen bileşendir.

SelectOneRadio Kullanımı:

SelectOneRadio kullanımını bir örnek üzerinden anlamaya çalışalım. Şimdi bir kez elle bir kez de liste yöntemi ile ekranda görülecek nesneleri ekleyelim ve uygulamamızı çalıştıralım.

1-Nesnler El İle Eklenerek:

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:f="http://java.sun.com/jsf/core"      
	  xmlns:h="http://java.sun.com/jsf/html">
	<h:head>
   
	</h:head>
	<h:body>
		<h:form>
			Sosyal medya hesap sayınız:
			<h:selectOneRadio value="#{sh.hesapsayisi}">
				<f:selectItem itemValue="4" itemLabel="1"/>
				<f:selectItem itemValue="5"  itemLabel="2"/>
				<f:selectItem itemValue="6"  itemLabel="3"/>
			</h:selectOneRadio>
			<br/>
			En çok kullandığınız sosyal medya:
			<h:selectOneRadio value="#{sh.encokkullanilan}">
				<f:selectItem itemValue="Facebook" itemLabel="Facebook"/>
				<f:selectItem itemValue="Twitter"  itemLabel="Twitter"/>
				<f:selectItem itemValue="Google+"  itemLabel="Google+"/>
			</h:selectOneRadio>
			<br/>
			En az kullandığınız sosyal medya hesabı:
			<h:selectOneRadio value="#{sh.enazkullanilan}">
				<f:selectItem itemValue="Facebook" itemLabel="Facebook"/>
				<f:selectItem itemValue="Twitter"  itemLabel="Twitter"/>
				<f:selectItem itemValue="Google+"  itemLabel="Google+"/>
			</h:selectOneRadio>
			<h:commandButton value="GÖNDER" action="secilenler.xhtml"/>
		</h:form>
	
	</h:body>
</html>

SosyalHesaplar.java Kodu:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="sh")
@RequestScoped
public class SosyalHesaplar {
private String hesapsayisi;
private String encokkullanilan;
private String enazkullanilan;

    public String getEncokkullanilan() {
        return encokkullanilan;
    }

    public String getEnazkullanilan() {
        return enazkullanilan;
    }

    public String getHesapsayisi() {
        return hesapsayisi;
    }

    public void setEnazkullanilan(String enazkullanilan) {
        this.enazkullanilan = enazkullanilan;
    }

    public void setHesapsayisi(String hesapsayisi) {
        this.hesapsayisi = hesapsayisi;
    }

    public void setEncokkullanilan(String encokkullanilan) {
        this.encokkullanilan = encokkullanilan;
    }  
}

Secilenler.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>
		Seçtikleriniz:
		<ol>
			<li>
				#{sh.hesapsayisi}
			</li>
			<li>
				#{sh.encokkullanilan}
			</li>
			<li>
				#{sh.enazkullanilan}
			</li>
		</ol>
	</h:body>
</html>

Index.xhtml Kodunun Açıklaması:

Index.xhtml kodumuzda 3 adet selectOneRadio etiketi kullandık. Ben birisini açıklayacağım.

İlk selectOneRadio etiketimizde etiketi açtıktan sonra value kısmına seçilen değeri göndermek istediğimiz yeri ve nesneyi belirliyoruz. Bizim sosyalhesaplar.java sınıfımız içinde ManagedBean(name=”sh”) kullandık ve burada bizden sosyal hesap sayısını girmemizi istediğimiz için ManagedBean sınıfı içerisinde yer alan hesapsayisi nesnesini value kısmına atadık.

f:selectItem ile de ekranda gözükmesini istediğimiz yazıyı ve bu yazı seçildiğinde gönderilecek olan değeri belirliyoruz. ItemLabel ekranda görülecek yazıyı, itemValue da yazı seçilince gönderilecek değeri belirler.

Burada şunu söyleyelim, itemValue kısmına 5 itemLabel kısmına 2 verdiğinizde ve sayfada 2’yi seçtiğinizde 5 değeri gönderilecektir.Buna dikkat etmeliyiz. Diğer sayfa ve java sınıfı kodunda açıklanacak bişey yoktur. Daha önce değindiğimiz noktalardır.

2-Liste Yöntemi ile Nesne Eklemek:

Liste yönteminde bu defa bir hashmap kullanarak yapacağız.

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>
			Sosyal medya hesap sayınız:
			<h:selectOneRadio value="#{sh.hesapsayisi}">
				<f:selectItems value="#{sh.sayilaridondur()}"/>
			</h:selectOneRadio>
			<br/>
			En çok kullandığınız hesap:
			<h:selectOneRadio value="#{sh.encokkullanilan}">
				<f:selectItems value="#{sh.sosyalhesaplaridondur()}"/>
			</h:selectOneRadio>
			<br/>
			En az kullandığınız hesap:
			<h:selectOneRadio value="#{sh.enazkullanilan}">
				<f:selectItems value="#{sh.sosyalhesaplaridondur()}"/>
			</h:selectOneRadio>
			<h:commandButton value="GÖNDER" action="secilenler.xhtml"/>
		</h:form>
	</h:body>
</html>

Secilenler.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>
		Seçtikleriniz:
		<ol>
			<li>
				#{sh.hesapsayisi}
			</li>
			<li>
				#{sh.encokkullanilan}
			</li>
			<li>
				#{sh.enazkullanilan}
			</li>
		</ol>
	</h:body>
</html>

Sosyalhesaplar.java Kodu:

import java.util.LinkedHashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="sh")
@RequestScoped
public class Sosyalhesaplar {
private String hesapsayisi;
private String encokkullanilan;
private String enazkullanilan;

    public String getEncokkullanilan() {
        return encokkullanilan;
    }

    public String getEnazkullanilan() {
        return enazkullanilan;
    }

    public String getHesapsayisi() {
        return hesapsayisi;
    }

    public void setEnazkullanilan(String enazkullanilan) {
        this.enazkullanilan = enazkullanilan;
    }

    public void setHesapsayisi(String hesapsayisi) {
        this.hesapsayisi = hesapsayisi;
    }

    public void setEncokkullanilan(String encokkullanilan) {
        this.encokkullanilan = encokkullanilan;
    }
    private static Map<String,Object> sosyalhesaplar;
    static{
        sosyalhesaplar=new LinkedHashMap<String,Object>();
        sosyalhesaplar.put("Facebook","Facebook");
        sosyalhesaplar.put("Twitter", "Twitter");
        sosyalhesaplar.put("Google+", "Google+");
    }
    private static Map<String,Object> sayilar;
    static
    {
        sayilar=new LinkedHashMap<String,Object>();
        sayilar.put("1", "1");
        sayilar.put("2", "2");
        sayilar.put("3", "3");
    }
    public Map<String,Object> sosyalhesaplaridondur()
    {
        return sosyalhesaplar;
    }
     public Map<String,Object> sayilaridondur()
     {
         return sayilar;
     }
}

Kodların Açıklaması:

-İndex sayfamızda selectOneMenu için ekranda gözükecek yazılarımızı f:selectItems ile verdik. F:selectItems bileşeninin value kısmına class yapısı içinde listeyi döndüren metodumuzu verdik.

Java sayfamızda ise önceki örnekten fazla olarak 2 liste nesnesi ve bu listelere eleman eklediğimiz 2 static yapıyı ve listeleri döndüren metodları ekledik. Önceki makalede neden static tanımladığımızı belirttik.

Şimdi bir de ekran çıktılarımıza bakalım.

Diğer yapıda da ekran görünteleri aynı olacaktır.

Bu makalede de bu kadar arkadaşlar. Başta da söylediğim gibi bir sonraki makalede geniş çaplı bir form uygulaması yapacağız. O uygulamanın bir adım gelişmişi form verilerini veritabanına yollamaktır. Yakın zamanda veritabanı konusuna da gireceğiz ve uygulamadan sonra da Facelet Etiketlerini irdeleyeceğiz.

Selam ve Sevgilerimle