[Résolu] Afficher le nombre d'enfants d'un noeud dans le nom

cancel
Showing results for 
Search instead for 
Did you mean: 
babou27
Member II

[Résolu] Afficher le nombre d'enfants d'un noeud dans le nom

Bonjour

Je souhaiterais pouvoir afficher après le nom de l'espace, le nombre d'enfant du  noeud.
Dans la page browse.jsp, j'aimerais pouvoir afficher le nom de l'espace "Nom de l'espace (X)" ou X est le nombre de child de l'espace.

Dans la RichList "spaceList",
Je récupère  pour chaque node, la liste des childs associations de type cm:contains. Et pour ceette liste j'affiche la taille size.
Pour cela, dans la colonne name
je mets la valeur value="#{r.name} (#{r.childAssociations['{http://www.alfresco.org/model/content/1.0}contains'].size})"
mais il ne met aucune valeur
Pouvez vous me dire comment afficher le nombre d'enfants ?

Merci
4 Replies
rivarola
Active Member

Re: [Résolu] Afficher le nombre d'enfants d'un noeud dans le nom

Bonjour,

Ce n'est pas un point d'interrogation qu'il faut devant size ?
babou27
Member II

Re: [Résolu] Afficher le nombre d'enfants d'un noeud dans le nom

Bonjour

Merci pour l'aide apporté
J'ai essayé "…contains']?size}" mais ça me dit "Invalid expression".
En fait le point d'interrogation fonctionne en langage Freemaker alors que dans ce cas c'est du Jsf el expression. 
En plus, quand j'ai testé les différentes propriétés du noeud, "properties", "aspects", "associations", "childAssociations", "permissions", ils sont tous null sauf properties.
J'arrive à récupérer les valeurs des propriétés, même pour mon modèle personnalisé mais je n'arrive pas pour les childAssociations.
Je ne vois pas comment faire.

J'espère mettre fait comprendre même si c'est assez brouillon.  Smiley Very Happy

Merci
rivarola
Active Member

Re: [Résolu] Afficher le nombre d'enfants d'un noeud dans le nom

Bonjour,

Effectivement j'ai confondu le langage FreeMarker et EL Language  Smiley Surprisedops:
Mais maintenant j'ai compris pourquoi tu n'arrives pas à récupérer tes child associations. Quand on regarde le code de la méthode queryBrowseNodes de BrowseBean, on remarque que les nodes mis en attribut sont des instances de MapNode et pas de Node. Or dans le constructeur de MapNode on récupère juste les propriétés puis on passe le marqueur propsRetrieved à true, ce qui veut dire qu'on considère que le noeud est complètement initialisé, alors qu'on n'est même pas allé cherché les child associations ni les associations…
Du coup getChildAssociations retournera toujours une map vide !
babou27
Member II

Re: [Résolu] Afficher le nombre d'enfants d'un noeud dans le nom

Bonjour

Merci beaucoup pour la réponse. Je comprends mieux le fonctionnement d'Alfresco.
D'ailleurs en étudiant davantage le code, j'ai vu qu'on pouvait utiliser un NodePropertyResolver dans le code pour les propriétés particulières (comme pour smallIcon), enfin c'est surtout valable dans le cas ou on modifie le code.
Dans mon cas j'ai recréé un bean pour gérer mes types customs TypeCustomBean (en m'inspirant de ForumsBean) et j'ai créé une propriété childNumber pour le node dans la fonction getNodes().

Dans TypeCustomBean.java

private void getNodes(){


MapNode node = new MapNode(nodeRef, this.getNodeService(), true);               
node.addPropertyResolver("smallIcon",
               this.browseBean.resolverSmallIcon);
node.addPropertyResolver("childNumber",
   this.resolverChildNumber);


}

public NodePropertyResolver resolverChildNumber = new NodePropertyResolver() {
@SuppressWarnings("unchecked")
public Object get(Node node) {
  Map cha = node.getChildAssociations();
  Object key = cha.get("{http://www.alfresco.org/model/content/1.0}contains");
  List<ChildAssociationRef> charef = (List<ChildAssociationRef>) key;
  int nbNode = charef.size();
  return (nbNode < 0 ? 0 : nbNode);
}
};

dans browse.jsp


<a:actionLink id="col2-act2" value="#{r.name} (#{r.childNumber})" actionListener="#{BrowseBean.clickSpace}" styleClass="header">
<f:param name="id" value="#{r.id}" />
</a:actionLink>



Voilà comment j'ai fait, si ça peut aider .
Merci beaucoup pour votre aide