Sansür, bir toplumun kendine olan güvensizliğini yansıtır ve otoriter rejimlerin belirgin bir özelliğidir.

--Potter Stewart

17.03.2011

JSF2'de Flash Scope Sorunu

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.