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