2012-04-15 47 views
1

我有一個應用程序在頁面上執行一些ajax更新並使用@ViewScoped ManagedBean。 當用戶提交表單時,我的操作方法重定向到Jsp以使用Cewolf庫顯示圖表。 它工作正常,但似乎豆存活這個重定向。如果用戶單擊Jsp上的後退按鈕,則所有'呈現的ajax'字段都爲空,但'execute ajax'字段顯示以前的值。然後,如果我做一個AJAX更新後,「空白」領域呈現與以往的價值觀......JSF查看作用域bean存活重定向到JSP

重定向代​​碼:

//save 
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); 
    Map<String, Object> sessionMap = externalContext.getSessionMap();      
    sessionMap.put("integrator", dataSource); 

    try 
    { 
     FacesContext.getCurrentInstance().getExternalContext().redirect("graph.jsp"); 
    } catch (IOException ex) 
    { 
     Logger.getLogger(EquationsBean.class.getName()).log(Level.SEVERE, null, ex);    
    } 

而且我的index.xhtml的一些位:

<h:selectOneMenu value="#{equationsBean.equationsToSolve}" id="neqs"> 
    <f:selectItems value = "#{equationsBean.eqsChoose}" /> 
    <f:ajax render="equationForm" execute ="neqs" listener="# {equationsBean.equationsSelected}"/> 
</h:selectOneMenu> 

我的期望是,當我重定向到Jsp時,我的豆死了,並且如果 用戶點擊後退按鈕,表單是新鮮的。我已經嘗試過一個過濾器來禁用緩存,但它表現得非常奇怪。此外,我不使用Jsp標籤,只有facelets,並且一些組件根據我的bean狀態具有「呈現」屬性。我應該發佈整個.xhtml,但它有點大...

謝謝,如果有人能幫助我理解這種行爲!

+0

不幸的是,我幫不了你。但是,如果你不使用它的「標籤」,你爲什麼要使用.jsp。首先你要談論的是重定向到.jsp,然後是關於發佈整個.xhtml。我很迷茫。你爲什麼要將facelets與jsps混合? Facelets更好,所以擺脫了JSP。 – Fallup 2012-04-15 20:59:32

+0

由於Cewolf lib以.jsp標記運行,因此我需要它們呈現圖表。 – Fernando 2012-04-15 21:23:57

+0

您是否嘗試將您的bean更改爲Request scope? – 2012-04-15 22:10:35

回答

1

剛剛找到了一個更好的解決方案:使用Primefaces,它不支持XY圖表,但與JFreeChart集成。

無論如何,謝謝!