2011-05-17 119 views
16

我正在使用PrimeFaces和JSF2。我試圖通過發送登錄名和密碼作爲Ajax請求來驗證用戶身份。在後臺bean的action方法中,如果驗證成功,我試圖驗證用戶並重定向到新視圖。如何從ManagedBean重定向到發送請求是否爲Ajax請求?

這是可能的,而使用primefaces?

因爲我認爲primefaces'p:commandButton,我只能有ajax行爲或導航。

回答

29

是的,只是發送重定向而不是(默認)轉發作爲結果。 <navigation-case> -less JSF 2.0方式將在操作方法中將?faces-redirect=true附加到結果字符串。

E.g.

public String login() { 
    // ... 
    return "home?faces-redirect=true"; 
} 
+0

嘿!我試了一下,它完美的工作,它解決了我的問題。謝謝。 – 2011-05-17 12:47:13

+0

不客氣。 – BalusC 2011-05-17 12:47:43

15

以下是另一種您可能會覺得有用的技巧。這是當您通過AJAX從未實現導航的Primefaces屬性調用方法時。例如,我有一個p:tree對象,其中有一個由nodeSelectionListener選擇的方法。

在該方法中,你可以調用重定向這樣的:

String url = (something) 
FacesContext fc = FacesContext.getCurrentInstance(); 
ExternalContext ec = fc.getExternalContext(); 
try { 
     ec.redirect(url); 
} catch (IOException ex) { 
     Logger.getLogger(Navigation.class.getName()).log(Level.SEVERE, null, ex); 
} 

希望對您有所幫助。

+1

這確實有效,但使用舊式的JSF 1.x方式。 – BalusC 2011-05-18 19:02:20

+0

適用於JSF2.0 primeFace autoComplite。謝謝!感謝阿蘭 – Akvel 2012-08-28 04:13:20

+0

,非常有用的東西。 – 2012-10-20 15:35:15