JSF Dersleri-JSF’De Metot İle Sayfa Yönlendirme
Merhaba. Bu makalemizde “JSF’de Yönlendirme Kuralları” konusunu irdeleyeceğiz.
Ne için kullanılır?
Normalde bir butona action verdiğimizde bizi istediğimiz sayfaya götürüyordu. Ancak dikkat ettiyseniz tarayıcı kısmında yönlendirdiğiniz sayfa değil eski sayfa sayfa adresi kalıyordu. Bu sorunu çözmek için biz basit bir ifadeyi kullanabiliriz. Bunun yanında sayfa yönlendirmeleri koşula bağlı olabilir. Bir alışveriş sitesi yaptınız diyelim ki. Kullanıcıya puan imkanı sundunuz. Kullanıcı alışveriş yaptı ve “Puanlarımı Kullanmak İstiyorum” ismindeki butona tıkladı. Sizin burada kullanıcının yeterli puanı olup olmadığını kontrol ettirmeniz ve sonrasında gerekli işlemleri yapmanız gerekir. Yeterli puanı varsa kullanabileceği sayfaya yoksa kullanamayacağına dair uygun sayfaya yönlendirirsiniz. İşte bu durumlarda imdadımıza metot ile sayfa yönlendirme yetişiyor.
Tarayıcıda eski sayfanın adresinin kalması sorunun çözümü:
Şimdi tarayıcıda eski sayfanın adresinin kalması sorununu çözelim. Çözümü çok basittir. Butona action veriyorsunuz ve yenisayfa.xhtml adında bir sayfaya göndermek istiyorsunuz. Bunu yaparken action=”yenisayfa.xhtml?faces-redirect=true” derseniz sorununuz çözülmüş olur.
Örnek uygulama
Şimdi bir örnek uygulama yapalım konuyu anlayabilmemiz için ve kodları açıklayalım. Kullanıcıdan bir sayı alacağız ve girdiği sayıya göre onu yeni bir sayfaya yönlendireceğiz. Eğer girdiği sayı 50’den büyük olursa 50’den büyük sayı girdiniz, küçük olursa 50’den küçük sayı girdiniz şeklinde yazılar olan sayfalara göndereceğiz.
Projemize sağ tıklıyoruz. New üstüne geliyoruz. En alttan Other bölümüne tıklıyoruz. Yeni gelen pencerede sağdan “Java Server Faces” soldan “JSF Page” seçiyoruz. Next diyoruz. Şimdi sayfanın adını soran ekran geliyor. kucuk adında sayfa ekleyeceğiz. Daha sonra aynı yolla bir de buyuk adında bir sayfa ekliyoruz.
Projemize bir de managedbean adında bir Managed Bean ekliyoruz.
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">
<h:head>
<title>Metot İle Sayfa Yönlendirme</title>
</h:head>
<h:body>
<h:form>
<h:outputText value="Bir sayı giriniz:"/>
<h:inputText value="#{managedbean.sayi}"/>
<h:commandButton value="GÖNDER" action="#{managedbean.karsilastir()}"/>
</h:form>
</h:body>
</html>
Kodun açıklaması:
Kodumuzda önceki makalelerde anlatılmayan bir nokta var o da action. Butonların action kısmına managed bean içinde tanımlanmış metodlar da verilebilir. Hatta ileri düzey kod yazarken daha çok bunu kullanabiliriz yaptığımız projeye göre. Action kısmına verdiğimiz metod bir string döndürüyor ve bu stringe göre action hangi sayfaya gideceğine karar veriyor.
kucuk.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>50'den Küçük</title>
</h:head>
<h:body>
Girilen sayı 50'den küçük
</h:body>
</html>
buyuk.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>
Girilen sayı 50'den büyük
</h:body>
</html>
Kodların Açıklaması:
Bu kodlar önceki makalelerde anlatılan kısımları içeriyor.Ekstra anlatıcak bir şey barındırmıyor.
ManagedBean.java kodu:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class managedbean {
int sayi;
public int getSayi() {
return sayi;
}
public void setSayi(int sayi) {
this.sayi = sayi;
}
public String karsilastir()
{
if(sayi>50)
{
return "buyuk?faces-redirect=true";
}
else
{
return "kucuk?faces-redirect=true";
}
}
}
Kodun açıklaması:
Burada index.xhtml sayfasından alınan sayı int sayi değişkenine atanıyor. Bu kodda çalışan kısım set (değişkene yaz) metodudur. Get (değişkeni al) metodu sayının değerini almak isteseydik işimize yarayacaktı. Burada kullanmasak da olurdu. Karsilastir metodu da girilen sayının 50 ‘den büyük mü küçük mü olduğuna karar veriyor ve ona göre uygun bir string döndürüyor.
Bu yazıda da bu kadar arkadaşlar. Basitçe metotla sayfa yönlendirmenin nasıl yapıldığını görmüş olduk. Bu dersin video halini de aşağıya ekledim. Gelecek yazıda görüşmek üzere sağlıcakla kalın.
https://www.youtube.com/watch?v=ugtc8aXNXmw