2011-06-14 81 views
0

頁面xyz.xhtml上的按鈕確實會調用此代碼(使用ajax)。JSF NavigationHandler#handleNavigation +清除緩存

FacesContext fc = FacesContext.getCurrentInstance(); 
NavigationHandler nh = fc.getApplication().getNavigationHandler(); 
nh.handleNavigation(fc, null, "home"); 

home指向abc.xhtml。此頁面包含應刷新的表格,但不會發生。任何想法?

如何在不使用自己的JavaScript的情況下刷新?我有一個解決方法,使用onload屬性和JavaScript使用Ajax重新加載表。但這是「平坦」的屏幕。這個解決方案並不複雜。

我正在使用JSF 2,OpenFaces 3和IE8。

預先感謝您!

回答

0

我不明白你爲什麼擺弄這樣的導航處理程序。我不知道有關OpenFaces的部分,因爲我從來沒有使用過,所以這裏只是用<f:ajax>一個基本的JSF 2.x的方法給出瞭如何它實際上應該做的基本思想:

<h:form> 
    <h:commandButton value="refresh" action="#{bean.refresh}"> 
     <f:ajax render=":table" /> 
    </h:commandButton> 
</h:form> 

<h:dataTable id="table" value="#{bean.list}" var="item"> 
    ... 
</h:dataTable> 

public void refresh() { 
    list = someService.list(); 
} 
+0

謝謝你,但表和按鈕不在同一頁上。 – 2011-06-14 13:02:56

+0

這也不是要求。所有你需要知道的僅僅是表格(客戶端)ID,而按鈕操作會重新加載數據。 – BalusC 2011-06-14 13:04:32

+0

即使它不在同一頁上?我不知道。我會嘗試。謝謝。 (我能夠解決我的問題,這是我的代碼中的一個小錯誤。) – 2011-06-14 13:41:07