2015-11-04 84 views
-1

我不能在liferay中使用primefaces树组件,我不明白为什么。 我尝试了很多黑客(范围,UiTreeNode/TreeNode,没有节点,...),但当我提交/刷新我的页面(ajax或非ajax)时,我总是得到一个重复的ID。树上的重复ID(Primefaces 5.2&Liferay 6.2)

我没有别的想法,所以我来找你......

XHTML:

<p:tree value="#{treeBasicView.root}" var="node"> 
    <p:treeNode> 
     <h:outputText value="#{node}" /> 
    </p:treeNode> 
</p:tree> 

的java:

@ManagedBean(name = "treeBasicView") 
@ViewScoped 
public class BasicView implements Serializable 
{ 

    private TreeNode root; 

    @PostConstruct 
    public void init() 
    { 
     root = new DefaultTreeNode("Root", null); 
     TreeNode node0 = new DefaultTreeNode("Node 0", root); 
     TreeNode node1 = new DefaultTreeNode("Node 1", root); 

     TreeNode node00 = new DefaultTreeNode("Node 0.0", node0); 
     TreeNode node01 = new DefaultTreeNode("Node 0.1", node0); 

     TreeNode node10 = new DefaultTreeNode("Node 1.0", node1); 

     node1.getChildren().add(new DefaultTreeNode("Node 1.1")); 
     node00.getChildren().add(new DefaultTreeNode("Node 0.0.0")); 
     node00.getChildren().add(new DefaultTreeNode("Node 0.0.1")); 
     node01.getChildren().add(new DefaultTreeNode("Node 0.1.0")); 
     node10.getChildren().add(new DefaultTreeNode("Node 1.0.0")); 
     root.getChildren().add(new DefaultTreeNode("Node 2")); 
    } 

    public TreeNode getRoot() 
    { 
     return root; 
    } 
} 
+0

你能告诉我们你写了一些代码吗?你能更好地解释什么是问题? –

+0

我更新了从5.1到5.2.13(精英)的primefaces,那么包含树的页面不再工作。因此,在其他页面上,我复制了primefaces展示树代码示例,但也失败了。 – nchal

回答

0

好吧,我发现了。也许我可以帮助别人。

您必须知道liferay bridge已通过Primefaces主版本认证,不是Elite版本认证。但补丁5.2.4改变了UITree#visitTree的实现,似乎桥不能处理这种修改。我不知道为什么,但不能。所以我重写了一些方法(visitTree/visitFacets/visitNodes),以便忽略与访问节点有关的布尔值的改进(老实说,我不太了解)。 Aaaaand它的工作原理! Q.E.D

https://www.liferay.com/fr/web/neil.griffin/blog/-/blogs/announcement-liferay-faces-4-x-3-x-2-x-ga6-released