2012-03-21 30 views
0

我打電話的支持Bean的功能,但渲染JSF頁面之前,我需要做的是依賴於JSF頁面,將呈現(從一個呼叫此頁面的變化對一些操作另一個)。使用一個PhaseListener在攔截呈現階段

我需要攔截的URL的名稱,之前renderize頁面,因爲我需要執行的操作和結果存儲在會話。

所以我想使用的PhaseListener來獲取URL和導航案例不是名稱。

如:函數 '執行' 返回 'ivIndex',但我需要得到 '/zone/iv/index.xhtml'。

我該怎麼做?

方法:

public String execute(){ 
    return nameUrl(); // return name of a navigation rule, per example : ivIndex 

faces-config.xml中

<navigation-rule> 
    <from-view-id>*</from-view-id> 

    <navigation-case> 
     <from-outcome>ivIndex</from-outcome> 
     <to-view-id>/zone/iv/index.xhtml</to-view-id> 
    </navigation-case> 

回答

0

您可以使用

FacesContext.getCurrentInstance().getViewRoot().getViewId();