【问题标题】:avoid nodes of p:treeTable to collapse after update避免更新后 p:treeTable 的节点崩溃
【发布时间】:2014-08-18 07:35:19
【问题描述】:

我在一个表单中有一个p:treeTable,在另一个表单中有一个p:dialog,我从p:dialogp:treeTable添加数据

在提交对话框的h:commandButton 时,我添加了p:treeTable 的更新,以便查看添加的节点

问题是用户打开的所有展开的节点都会崩溃

我发现这个问题Avoiding the collapsing of p:treeTable after update 在他写的问题中解决了,但他的问题没有答案或解决方案

【问题讨论】:

    标签: primefaces jsf-2.2 treetable


    【解决方案1】:

    为避免折叠或展开,您必须在 java 端将节点标记为折叠或展开。为此,只需添加一些 ajax 调用和一些侦听器方法。

    JSF/面孔:

    <p:tree ...>
        <p:ajax event="expand" listener="#{backing.nodeExpand}" />
        <p:ajax event="collapse" listener="#{backing.nodeCollapse}" />
    ...
    </p:tree>
    

    Java/支持:

    public void nodeExpand(NodeExpandEvent event) {
        event.getTreeNode().setExpanded(true);      
    }
    
    public void nodeCollapse(NodeCollapseEvent event) {
        event.getTreeNode().setExpanded(false);     
    }
    

    【讨论】:

    • 这不适用于多级树表(即您必须扩展多个嵌套节点才能到达叶子),这种情况有解决方案吗?谢谢。
    • 更新:我找到了解决方案。我必须跟踪扩展节点并在根节点更新后扩展这些节点。
    【解决方案2】:

    根据PrimeFaces Tree Events Showcase,您忘记使用更新语句了。

    【讨论】:

      【解决方案3】:

      如果您尝试在树中调用任何操作或 actionListener,您需要消耗所有节点和父节点,如果您不这样做,这只会不起作用并且不会显示任何错误。

      node.setExpanded(true);
      node.getParent().setExpanded(true);
      

      【讨论】:

        猜你喜欢
        • 2014-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-04
        • 1970-01-01
        • 2022-08-23
        • 2011-11-15
        • 1970-01-01
        相关资源
        最近更新 更多