Jsf 使用Primefaces树导航
我使用的是PrimeFaces3.2和JSF2.0 在我的应用程序中,在某些情况下,节点选择应该导致导航。问题是,“nodeSelectListener”属性似乎已从Primefaces 3.2中删除,这迫使我将ajax与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> 如果不是因为导航后节点选择消失了,那就好了。树位于在所有页面上呈现
<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");