2012-02-05 27 views
11

後,我曾與JSF 2 使用閃光燈範圍我希望把閃圖對象我的行動中,並顯示在下一頁此對象的一個​​誤解。 這裏是我的動作(由H撥打:commandLink):對象在閃光範圍不可重定向

public String showDetail(PersonneDTO personne) { 
    MessageFlashBean message = new MessageFlashBean(); 
    message.addMessage("test"); 
    FacesContext.getCurrentInstance().getExternalContext().getFlash() 
     .put("test", message); 
    return "showDetail"; 
} 

這只是一個測試,但真正的目的我想用比較複雜。

下面是閃光燈使用第二頁:

<ui:fragment rendered="#{flash.test != null and flash.test.hasMessage()}" > 
    <ui:repeat var="message" value="#{flash.test.messages}"> 
     #{message} 
    </ui:repeat> 
</ui:fragment> 

這裏是導航(這裏是我的問題:)):

<navigation-rule> 
    <from-view-id>/index.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>showDetail</from-outcome> 
     <to-view-id>/private/showDetail.xhtml</to-view-id> 
    </navigation-case> 
</navigation-rule> 

在這種情況下,閃光範圍工程罰款和我的信息出現。

但是,如果我在導航案例中添加重定向,我的flash地圖中的對象已經消失。

我不明白爲什麼我不能使用在導航規則的重定向(我相信這是閃光範圍的目標)。

可能是我的代碼有問題。

有人可以幫助我嗎?

感謝

+0

我試過JSF 2.0.3.FCS,它確實存在重定向。 – Ravi 2012-02-05 22:55:38

回答

14

的鑽嘴魚科的實施JSF2閃光範圍had a lot of problems的。他們中的大多數都在每次新發布的Mojarra中解決。目前,在最新的Mojarra version,2.1.6中,據我所知,仍然只有一個主要的開放性問題:如果你重定向到不同的基本路徑,它將不起作用。請參閱issue 1751長篇討論中的(當前)最新評論。

現在,你基本上有以下選項:

  1. 忘記,當您需要重定向到一個不同的基本路徑使用Flash。改爲使用請求參數,或嘗試使用自定義cookie來模擬Flash範圍。

  2. 如果可能的話,重組的文件夾結構,這樣你就不需要在您需要的閃光範圍求生存,以重定向到一個不同的基本路徑。

  3. 嘗試MyFaces,而不是鑽嘴魚科。也許它在閃光範圍方面做得更好。


更新:按issue 2136的不同路徑上的重定向後不被閃範圍上次打開的問題在不久即將鑽嘴魚科2.1.14解決。所以在這個版本中,全部發現並解決了迄今爲止打開的Flash範圍相關問題 應該解決並關閉。

+0

非常感謝,我使用Mojarra 2.1.6,並且我沒有看到這個bug。這正是我的情況。我會嘗試回到2.0.3版本 – Kiva 2012-02-06 11:19:52

2

與netbeans jsf 2.1有這個問題與閃存。使用/somepage?redirect-faces=true or /somedirectory/somepage?faces-redirect=true不起作用。它必須是somepage?redirect-faces=true

測試mojarra 2.1.7,但它沒有上述問題。

+2

我認爲這裏的IDE並不重要...... – 2013-07-22 07:16:26