1

我正在使用 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");
4

0 回答 0