2011-04-05 28 views
19

JSF 1.2 Oturum Kapsamı Bean üzerinde bir JSF formum var. Seansı geçersiz kılan bir "Reset" butonum var.JSF'de çerezler nasıl kullanılır?

Oturumlar arasında oturum numarası (Not JSF oturumu değil, özel oturum numaram) hatırlamak için çerezleri kullanmayı denedim, ancak başarısız oldum. Soruma Soru: Çerezi başlatmak, almak ve saklamak için doğru yer (Bazı dinleyici? Bean Oluşturucu?) Nerede?

Bunu yapmak için en iyi yöntemi arıyor.

Teşekkürler! (Vakaların 99.9% olarak doğrudur;) Servlet API üstüne JSF çalıştırırken

cevap

34

Sen ExternalContext#getRequestCookieMap()

Map<String, Object> cookies = externalContext.getRequestCookieMap(); 
// ... 

olarak tüm çerezleri elde edebilirsiniz), harita değeri javax.servlet.http.Cookie olarak çözümlenir.

Cookie cookie = (Cookie) cookies.get(name); 
// ... 

MTU ExternalContext#addResponseCookie() yöntem 2.0 kişiye yoksun JSF 1.2, içinde, (tabii ki Servlet API üst sadece çalışan JSF) ExternalContext#getResponse()HttpServletResponse döküm ve ardından HttpServletResponse#addCookie() kullanmak gerekir.

HttpServletResponse response = (HttpServletResponse) externalContext.getResponse(); 
Cookie cookie = new Cookie(name, value); 
cookie.setMaxAge(maxAge); // Expire time. -1 = by end of current session, 0 = immediately expire it, otherwise just the lifetime in seconds. 
response.addCookie(cookie); 

İstediğiniz JSF bağlamında bu her yerde yapabilirsiniz, doğru yerde tek fonksiyonel gereksinimi bağlıdır. Yanıt verilmişse, yalnızca çerezi eklemediğinizden emin olmanız gerekir, aksi takdirde IllegalStateException olur.

+0

'addResponseCookie()' yöntemi 'String name, String value, Map properties' parametrelerini kabul eder. Örneğin, javax.servlet.http.Cookie' adlı _maxAge_, özelliklerde kodlanmıştır. Doğrudan bir "Çerez" kullanmanın bir yolu var mı? – Thor

+0

Cevabımdaki 'addResponseCookie()' bağlantısını tıklayın. Javadoc'a işaret ediyor. – BalusC

+0

@BalusC, belirli bir çerez almak için tüm çerezleri almalıyım, doğrudan belirli bir çerez alamıyorum? –

İlgili konular