2015-11-04 1 views
-1

Je ne peux pas utiliser le composant arborescence primefaces dans liferay et je ne comprends pas pourquoi. J'ai essayé beaucoup de hack (scope, UiTreeNode/TreeNode, sans node, ...) mais j'ai toujours un ID dupliqué quand je soumets/rafraichir ma page (ajax ou non-ajax).ID dupliqué dans l'arborescence (Primefaces 5.2 & Liferay 6.2)

Je n'ai pas d'autres idées, donc je suis venu te ...

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

Pouvez-vous nous montrer un certain code écrit? Pouvez-vous expliquer mieux quel est le problème? –

+0

J'ai mis à jour les primitives de 5.1 à 5.2.13 (Elite) puis la page qui contient un arbre ne fonctionne plus. Donc, sur une autre page, je copie l'exemple de code d'arborescence des vitrines primitives, mais il a échoué aussi. – nchal

Répondre

0

D'accord, j'ai trouvé. Peut-être que je peux aider quelqu'un.

Vous devez savoir que le pont liferay est certifié pour la version principale Primefaces, pas pour la version Elite. Mais le correctif 5.2.4 a modifié l'implémentation de UITree # visitTree et il semble que le pont ne puisse pas gérer cette modification. Je ne sais pas pourquoi mais ça ne peut pas. Donc, je substitue une méthode (visitTree/visitFacets/visitNodes) afin d'ignorer l'amélioration d'un booléen lié aux nœuds visités (pour être honnête, je ne comprends pas vraiment). Aaaaand ça marche! Q.E.D

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