2011-06-14 45 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