Redirect işlemlerinde sunucuya ikinci bir istem gönderildiği için
Request Scope içindeki değişkenler kayboluyor, bu yüzden aktarılacak değişkenler
Session Scope'ta tutuluyordu. Session scope'un gereksiz meşgul edilmemesi için JSF2 ile birlikte
Map gerçekleştirimi olan
flash nesnesi kullanıma sunuldu. Böylelikle redirect işlemlerinde değişken aktarımı ve kullanımı Java sınıfı içerisinde:
ExternalContext.getFlash().put("message", "Your password is about to expire");
JSF sayfası içerisinde de:
#{flash.message}
şeklinde yapılabilir hale geldi. Ne var ki bu özellik Mojarra 2.0.3 impl'de (MyFaces ile denemedim) sadece aynı dizin ve altdizinlerde bulunan sayfalara redirect yapılırsa çalışıyor. Farklı dizin yapılarında bulunan sayfalar arasında yapılan redirect işleminde bir bug nedeniyle Flash scope'a konulan değişkene ulaşamıyorsunuz. Sorunun nerden kaynaklandığı ile ilgili bir bağlantı
şurda.. Böyle bir gereksinimde gene eski usül, Session Scope'tan faydalanmak ve ilgili değişken redirect yapılan sayfada kullanıldıktan sonra Session Scope'tan değişkeni kaldırmayı unutmamak gerekiyor.
Hiç yorum yok:
Yorum Gönder