2012-01-06 31 views
6

Kullanıcı girişi yapmadan önce, xxx.detail.jsf yazıyorsa, kullanıcı giriş yapmasına izin veren giriş sayfasına yönlendirilir. Bu görev zaten yapıldı. Kullanıcıya başarılı bir giriş yaptıktan sonra xxx.detail.jsf numaralı telefona yeniden yönlendirmeyi nasıl sağlayabilirim?Kullanıcı girişi yaptıktan sonra kullanıcı isteğine erişim yeniden yönlendiriliyor mu?

Eclipse Indigo, Tomcat 7 ve Mojarra 2.0.3 kullanıyorum.

+0

Tam olarak ne demek istediğiniz açık değildir. Ne demek "* xxx.detail.jsf" ise, giriş sayfasına yönlendirecektir * "? – Lion

+0

@Lion, kullanıcı giriş yapmadan önce bir sayfaya (örn: detail.jsf) erişmeye çalışıyorsa, sistem kullanıcıyı giriş sayfasına yönlendirir ve kullanıcının istediği sayfaya (ör: detail.jsf) yeniden yönlendirir. kullanıcı sisteme başarılı giriş yaptıktan sonra erişim. –

cevap

10

Oturum açma sayfasına yönlendirdiğiniz noktada, geçerli istek URI'sini kaydetmeniz gerekir. Giriş kontrolünü ve yönlendirmeyi gerçekleştirmek için büyük olasılıkla bir Filter kullanıyorsunuzdur. Bu durumda, mevcut istek URI elde etmek HttpServletRequest#getRequestURI() kullanabilirsiniz:

String requestURI = request.getRequestURI(); 

Sen yönlendirme URL'sinde bir istek parametre olarak iletin veya oturum içinde saklayın olabilir ya. bir istek parametresi olarak Geçme güvenlisidir: giriş sayfası ile ilişkilendirilmiş fasulye olarak

response.sendRedirect(request.getContextPath() + "/login.jsf?from=" + URLEncoder.encode(requestURI, "UTF-8")); 

, yönetilen bir özellik veya bir görünüm parametresi olarak ayarlayabilirsiniz. Fasulyenin iyi ajax eylemleri/doğrulamaları ve benzerlerini gerçekleştirebilmeniz için kapsamlı olduğunu varsayalım. Gerçek giriş başarılı Sonra

<f:metadata> 
    <f:viewParam name="from" value="#{login.from}" /> 
</f:metadata> 

, sen ExternalContext#redirect() tarafından o URI yönlendirebilir: Bu durumda, görünüm parametre yalnızca düzgün bir yoludur

public void login() throws IOException { 
    // ... 

    FacesContext.getCurrentInstance().getExternalContext().redirect(from); 
} 

(gerekirse tedarik a from'un olduğu varsayılan hedef için varsayılan hedef

+0

Lütfen cevabınıza kodumda nasıl ekleyebileceğimi gösterebilir misiniz? 'externalContext.redirect (from);' Bu satırda hata alıyorum –

+0

'FacesContext' tarafından her zamanki şekilde kullanılabilir. Cevabımı düzenledim. – BalusC

+0

Cevabınız için teşekkürler, bana çok yardımcı oluyor. 3sec'i geri saymak isteyip istemediğimi bana gösterebilir misiniz? Sonra sadece sayfaya yeniden yönlendirmeye başlayabilirsiniz, nasıl yapılır? –

İlgili konular