Jsf 使用Primefaces树导航

Jsf 使用Primefaces树导航,jsf,primefaces,Jsf,Primefaces,我使用的是PrimeFaces3.2和JSF2.0 在我的应用程序中,在某些情况下,节点选择应该导致导航。问题是,“nodeSelectListener”属性似乎已从Primefaces 3.2中删除,这迫使我将ajax与 <p:Tree ...> <p:ajax event="select" listener="#{treeBean.onNodeSelect}" /> </p:Tree> 如果不是因为导航后节点选择消失了,那就好了。树位于在所有页面上呈现

我使用的是PrimeFaces3.2和JSF2.0

在我的应用程序中,在某些情况下,节点选择应该导致导航。问题是,“nodeSelectListener”属性似乎已从Primefaces 3.2中删除,这迫使我将ajax与

<p:Tree ...>
 <p:ajax event="select" listener="#{treeBean.onNodeSelect}" />
</p:Tree>
如果不是因为导航后节点选择消失了,那就好了。树位于在所有页面上呈现的facelet模板中

我的问题是,我无法使用传统的JSF导航进行导航,比如在使用Ajax时返回一个字符串,即:“myPage.xhtml”。那是行不通的

我到处寻找更好的解决方案,但我只找到使用“nodeSelectListener”的示例,在树上设置ajax=false。至少在3.2之前。 在重定向之后,似乎很难通过编程设置所选值。有谁有更好的解决方案吗

更新:我找到了一个在某种程度上有效的解决方案:

在onNodeSelect方法中,我使用

FacesContext
  .getCurrentInstance()
  .getApplication()
  .getNavigationHandler()
  .handleNavigation(FacesContext.getCurrentInstance(),
          "null", "myPage.xhtml");

对于导航,有单独的ajax事件(展开、折叠)。您在使用select event时面临的问题没有说明。您能提供更多详细信息吗?问题是我无法使用JSF导航(返回字符串,即“myPage.xhtml”,因为在使用ajax时这将不起作用。当我使用ExternalContext重定向时,当我进入下一页时,树将失去它的状态。在onNodeSelect中,您可以使用event.getTreeNode()获取树节点。您是否尝试使用FacesContext.getCurrentInstance().getExternalContext().redirect(您的URL)是的,但正如我在问题中所述,在重定向后,我丢失了树的状态。@baron5,您的树管理bean的作用域是什么?
FacesContext
  .getCurrentInstance()
  .getApplication()
  .getNavigationHandler()
  .handleNavigation(FacesContext.getCurrentInstance(),
          "null", "myPage.xhtml");