我正在使用Primefaces 3.2和JSF 2.0。
在我的应用程序中,某些情况下节点选择应导致导航。问题是,似乎从Primefaces 3.2中删除了“nodeSelectListener”属性,迫使我使用带有
的ajax<p:Tree ...>
<p:ajax event="select" listener="#{treeBean.onNodeSelect}" />
</p:Tree>
只允许我使用
进行导航ExternalContext ec = fc.getExternalContext();
ec.redirect(url);
如果没有导航后节点选择消失的事实,那就没问题了。树位于所有页面上呈现的facelet模板内。
我的问题是我无法使用传统的JSF导航进行导航,例如在使用Ajax时返回一个String,即:“myPage.xhtml”。那是行不通的。
我到处寻找更好的解决方案,但我只找到使用“nodeSelectListener”的示例,在树上设置ajax = false。那至少是3.2之前。 似乎很难在重定向之后以编程方式设置所选值。有没有人有更好的解决方案?
更新:我找到了一个在某种程度上有效的解决方案:
FacesContext
.getCurrentInstance()
.getApplication()
.getNavigationHandler()
.handleNavigation(FacesContext.getCurrentInstance(),
"null", "myPage.xhtml");