Bu yazımızda JSF sayfaları arasında nasıl yönlendirme yapabileceğimizi inceleyeceğiz
Dinamik web sayfaları geliştirirken ihtiyaçlar doğrultusunda farklı sayfalara geçiş yapmak gerekir . Örnek verirsek bir alışveriş sitesinde bir ürüne tıkladıktan sonra o ürünün detaylarını gösteren farklı bir web sayfasının açılmasını bekleriz
Alttaki şekilde bir web sayfasının örnek sayfa geçişleri görülmektedir
JSF içerisinde sayfa geçişlerini farklı yöntemler kullanarak yapabiliriz
JSF Sayfası İçerisinde Otomatik Yönlendirme
Bu yöntemde jsf dosyasının içerisinde yönlendireceğimiz web sayfasını belirtiyoruz . Alttaki örnekteki web sayfasında Gönder butonuna bastığımız zaman userDetail.jsp sayfası açılır.
<f:view>
<h:form>
<h:commandButton value="Gönder" action="userDetail" />
</h:form>
</f:view>
Managed Bean İçerisinde Otomatik Yönlendirme
Bu yöntemde managed bean içerisinde yönlendirme işlemi yapılır .
jsf sayfası alttaki gibidir
<f:view>
<h:form>
<h:commandButton value="Gönder" action="#{userManagedBean.send}" />
</h:form>
</f:view>
managed bean içerisinde ise yönlendirme alttaki gibi olur
public String send(){
return "userDetail";
}
Koşullu Yönlendirme
JSF sayfasundan parametre gönderip , gönderdiğimiz parametrelere göre managed bean içerisinde farklı sayfalara yönlendirme yapabiliriz
Not : <f:param bileşeni @RequestScope ile kullanılmalıdır
jsf sayfası alttaki gibidir
<h:commandLink value="UserDetail" action="#{userManagedBean.send}" >
<f:param name="pageId" value="1"></f:param>
</h:commandLink>
<br/>
<h:commandLink value="UserPicture" action="#{userManagedBean.send}" >
<f:param name="pageId" value="2"></f:param>
</h:commandLink>
managed bean içerisinde koşullu yönlendirme alttaki gibidir
@ManagedProperty(value="#{param.pageId}")
private Integer pageId;
public String send(){
if(pageId == 1){
return "userDetail";
}else{
return "userPicture";
}
}
faces-config Dosyasından Yönlendirme
Bazı yönlendirme işlemleri faces-config.xml yardımıyla yapılır . Bu yöntem için faces-config.xml dosyasında navigation-rule tanımlanır .
<navigation-rule>
<from-view-id>.....xhtml</from-view-id>
<navigation-case>
<from-action>#{managedBeanAdi.managedBeanMetodu}</from-action>
<from-outcome>page</from-outcome>
<to-view-id>page1.jsf</to-view-id>
</navigation-case>
<navigation-rule>
from-view-id : Hangi web sayfasından yönlendirilecse o web sayfasının adı yazılır
navigation-case : Yönlendirme kuralları bu tag içerisine yazılır
from-action : Managed bean metodu
from-outcome : managed bean metodunda return ettiğimiz karakter seti
to-view-id : Yönlendireceğimiz jsf sayfası
örnek jsf sayfası alttaki gibidir
<h:form>
<h:commandLink value="UserDetail" action="#{userManagedBean.send}" />
</h:form>
örnek managed bean içerisinde koşullu yönlendirme alttaki gibidir
public String send(){
return "userPage";
}
faces-config konfigurasyonu
<navigation-rule>
<from-view-id>user.jsp</from-view-id>
<navigation-case>
<from-action>#{userManagedBean.send}</from-action>
<from-outcome>userPage</from-outcome>
<to-view-id>userDetail.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Sayfa Redirect(Yönlendirme)
Bir web sayfasından başka bir web sayfasına yönlendirme işlemini direk web sayfası içerisinden yapabiliriz
örnek jsf sayfası alttaki gibidir
<h:commandLink value="UserDetail" action="userDetail?faces-redirect=true" />