SORU
11 AĞUSTOS 2011, PERŞEMBE


Nasıl doğru bean scope seçilir?

Fasulye kapsamları gibi farklı olduğunu fark ettim:

@RequestScoped
@ViewScoped
@FlowScoped
@SessionScoped
@ApplicationScoped

Her amacı nedir? Nasıl bean için uygun bir kapsam seçerim?

CEVAP
11 AĞUSTOS 2011, PERŞEMBE


Kapsam (yaşam) fasulye temsil eder.

@RequestScoped fasulye gibi uzun, tek bir HTTP istek-yanıt döngüsü (bir Ajax isteği tek bir HTTP isteği olarak çok önemli not) yaşıyor. @ViewScoped fasulye eylem yöntemleri herhangi bir navigasyon/Yönlendirme Olmadannull/void dönen çağrı geri göndermeler ile aynı OLUMSUZLUK görünümü ile etkileşimde olduğun sürece yaşıyor. ** 4 fasulye manzarası akışı yapılandırma dosyasında kayıtlı belirtilen toplama gezindiğiniz sürece yaşıyor. ** 5 fasulye gibi köklü HTTP oturumu olarak yaşıyor. @ApplicationScoped bir bean web uygulama çalıştığı sürece yaşıyor.

Seçmek için hangi (devlet) fasulye tutar ve gösterir sadece veri bağlıdır. Basit @RequestScoped Kullanım ve non-ajax/sunumlar oluşturur. Zengin @ViewScoped ajax-etkin dinamik görünümler (,, diyaloglar oluşturma ajaxbased doğrulama, vb) kullanın. İçin @FlowScoped "sihirbaz" ("") anket toplama veri girişi birden fazla sayfaya yayılmış desen kullanın. Oturum açan kullanıcı ve kullanıcı tercihleri (dil, vb.) gibi bir istemci belirli bir veri için kullanın. @SessionScoped,. Uygulama geniş veri/sabitler, herkes için aynı olan açılan listeler gibi @ApplicationScoped kullanın.

/View/kapsamlı veri isteği @ApplicationScoped fasulye için bir oturum kötüye tüm kullanıcılar arasında paylaşılması için yapar, başkası da sadece düz yanlış olan birbirimizin veri görsün. Kötüye bir @SessionScoped bean için Görünüm/istek kapsamlı veri olur olmak arasında paylaşılan tüm sekmeleri/windows tek bir tarayıcı oturumu, yani son kullanıcıya karşılaşabilirsiniz inconsitenties zaman etkileşim ile her görünüm sonra Sekmeler arasında geçiş olduğu için kötü bir kullanıcı deneyimi. Görüntülemek için @RequestScoped fasulye kötüye kapsamlı verileri görüntülemek kapsamlı verileri (ajax) her geri gönderme, muhtemelen çalışmayan formlar (see also points 4 and 5 here) neden varsayılan yeniden yapacak. İstek kapsamlı veri için @ViewScoped fasulye kötüye istemci etkilemez, ama gereksiz yere sunucu bellek kaplar.

Kapsam performans üzerindeki etkileri, sürece dayalı seçilmelidir yerine unutmayıngerçektendüşük bellek ayak izi var ve tamamen vatansız gitmek istiyorum; müşterinin durumunu korumak için istek parametreleri ile @RequestScoped fasulye sadece ve keman kullanmak gerekir. Ayrıca farklı kapsamlı veri ile tek OLUMSUZLUK bir sayfa varsa, o zaman mükemmel geçerli ayrı destek fasulye koymak kapsamı, verilerin kapsamı eşleşen olduğunu unutmayın. Fasulye sadece CDI yönetilen fasulye durumunda OLUMSUZLUK yönetilen fasulye veya @Inject 17 *ile birbirine erişebilirsiniz.

Ayrıca Bkz:


AKSARAY da flash kapsamında destekler. Oturum kapsamında veri girişi ile ilgili olan kısa oturma kurabiye tarafından desteklenmektedir. Yönlendirmeden önce, benzersiz bir çerez oturumu kapsamında veri girişi ile ilgili olan bir değer ile HTTP yanıtı üzerine kurulacak. Sonra yeniden, varlığın flash kapsam çerez olacak kontrol ve veri girişi ile ilgili çerez çıkarılır oturum kapsamı ve koymak isteği kapsamının yeniden yönlendirilen istek. Sonunda kurabiye HTTP yanıtı kaldırılacaktır. Bu şekilde yönlendirilmiş talep ilk istek olarak hazırlanmış olan kapsamlı veri isteği erişimi vardır.

Bu aslında yönetilen fasulye kapsam olarak kullanılamaz, yani @FlashScoped diye bir şey yok. Flaş kapsamı yalnızca yönetilen fasulye ExternalContext#getFlash() EL #{flash} ile bir harita olarak kullanılabilir.

Ayrıca Bkz:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • Google

    Google

    18 EYLÜL 2005
  • TomSka

    TomSka

    30 Mayıs 2006