Bonjour, je constate un comportement que je n’arrive pas à expliquer lors de l’utilisation d’un treeview.
Alors que je filtre ce qui devrait apparaitre :
@Override
public boolean canReference(String obj, String fk) {
if (isTreeviewInstance()) {
return "BCSIBCBusinessCapability".equals(obj) && "BCMotherId".equals(fk);
}
return super.canReference(obj, fk);
}
En théorie, le deuxième item de la treeview ne devrait pas apparaitre car son fieldName = BCMotherIdWk comme on peut constater dans les logs ci-dessous
Est-ce un lien reflexif sur l’objet ?
En effet, c’est un lien reflexif.
Et rien ne dit que BCMotherIdWk c’est “Business capability (Parent)” ?
Dans les logs que j’ai mis dans mon premier poste, je vois le nom des liens filtrés par la condition.
Je le vois aussi sur le panel de l’objet en inspectant le html, je vois bien data-key="BCSIBCBusinessCapability_BCMotherId" et data-key="BCSIBCBusinessCapability_BCMotherIdWk" `
D’ailleurs ce même filtre fonctionne comme attendu sur les panels.
Effectivement l’arbre parcourt les liens réflexifs sans utiliser de canReference. Il se sert de ce hook pour construire un arbre entièrement dynamique, sinon il utilise la définition des nodes du Treeview.
Pour masquer certains liens réflexifs, à mon avis il faut agir sur votre instance Treeview au niveau de obj.getReflexiveLinks() pour débrayer/retirer les Link que vous ne voulez pas au postLoad.
Sinon il faudrait nous donner un peu plus d’info sur votre modèle d’objets et sur la définition de votre treeview pour reproduire votre cas.